我的.htaccess规则配置如下:
RedirectMatch permanent ^/$ http://www.foosite.com/content/
它被放入,以便任何进入我网站根目录的东西都会转到“content”文件夹。
今天我设置了一个名为“dev.foosite.com”的子域名,我打算用它来保存正常站点的精确副本,这样我就可以进行开发工作了。
问题是,当我浏览dev.foosite.com时,它被重定向到www.foosite.com/content /
我对这些规则的工作方式还不太了解,在尝试阅读文档后我感到愚蠢。
如何为以下内容设置.htaccess:
只要有人访问www.foosite.com,它就应该重定向到www.foosite.com/content /
只要有人去dev.foosite.com,就应该重定向到dev.foosite.com/content /
...谢谢
答案 0 :(得分:1)
您已设置RedirectMatch
指令,以便它生成重定向到绝对URL,您真正需要的是相对URL - 也就是说,重定向不应替换URL的原始主机名,无论调用哪个网站,它都能正常工作。为此,请将RedirectMatch行(最好是在两个站点上,但至少在dev子域上)更改为:
RedirectMatch permanent ^/$ /content/
(在开发网站www.foosite.com
中将dev.foosite.com
更改为.htaccess
会产生相同的效果,但如果修改子域名或制作其他名称,则需要再次更改它网站的副本。上面描述的变化避免了这个问题。)
关于可能的增强的另一个注意事项,如果您感兴趣:您的指令目前丢弃任何路径信息,以便如果有人去了例如http://[www|dev].foosite.com/old/path/to/page.html
,她将被重定向到.../content/
,而不是.../page.html
;为了保留路径信息,假设这样做,你可以:
RedirectMatch permanent ^/(.*)$ /content/$1
或类似的东西,假设a)您的网站上的网址曾经有一段时间不需要/content/
,以及b)在旧网址约定和新网址之间存在一致的映射方式