配置.htaccess RedirectMatch以更好地处理子域
我在.htaccess中有一个如下配置的规则:配置.htaccess RedirectMatch以更好地处理子域,.htaccess,redirect,.htaccess,Redirect,我在.htaccess中有一个如下配置的规则: RedirectMatch permanent ^/$ http://www.foosite.com/content/ 它被放进去了,所以任何指向我的网站根目录的东西都会转到“内容”文件夹 今天我建立了一个名为“dev.foosite.com”的子域,我计划用它来保存普通站点的精确副本,这样我就可以进行开发工作 问题是,当我浏览dev.foosite.com时,它被重定向到www.foosite.com/content/ 我只是对这些规则的工作原
RedirectMatch permanent ^/$ http://www.foosite.com/content/
它被放进去了,所以任何指向我的网站根目录的东西都会转到“内容”文件夹
今天我建立了一个名为“dev.foosite.com”的子域,我计划用它来保存普通站点的精确副本,这样我就可以进行开发工作
问题是,当我浏览dev.foosite.com时,它被重定向到www.foosite.com/content/
我只是对这些规则的工作原理知之甚少,在尝试阅读文档之后,我觉得自己更傻了
如何为以下内容设置.htaccess:
谢谢…您已经设置了
RedirectMatch
指令,以便它生成指向绝对URL的重定向,而您真正需要的是一个相对URL——也就是说,重定向不应该替换URL的原始主机名,这样无论在哪个站点上调用它,它都可以工作。为此,请将重定向匹配行(最好在两个站点上,但至少在dev子域上)更改为:
(在dev站点的.htaccess
中将www.foosite.com
更改为dev.foosite.com
将具有相同的效果,但如果您修改子域名或制作站点的另一个副本,则需要再次更改。上述更改可避免出现这种情况。)
如果您感兴趣,还有一个关于可能的增强的注意事项:您的指令目前会丢弃任何路径信息,因此如果有人转到例如http://[www | dev].foosite.com/old/path/to/page.html
,她将被重定向到../content/
,而不是../page.html
;为了保存路径信息,假设需要这样做,您可以:
RedirectMatch permanent ^/(.*)$ /content/$1
或者类似的,假设a)曾经有一段时间你的站点上的URL不需要
/content/
,b)有一种一致的方式在旧的URL约定和新的URL约定之间映射。先生,你太棒了。非常感谢你在这方面帮助我。在我的例子中,生产站点和开发站点都在同一个域中,dev.foosite.com域只是一个子域。因此,您的第一个示例^/$/content/就是所需的全部内容。非常感谢。总是乐于助人。
RedirectMatch permanent ^/(.*)$ /content/$1