0

我在 .htaccess 中有一条规则,配置如下:

RedirectMatch permanent ^/$ http://www.foosite.com/content/

它被放入以便任何进入我网站根目录的东西都会进入“内容”文件夹。

今天我设置了一个名为“dev.foosite.com”的子域,我打算用它来保存正常站点的精确副本,这样我就可以进行开发工作。

问题是,当我浏览 dev.foosite.com 时,它被重定向到 www.foosite.com/content/

我只是不太了解这些规则是如何工作的,而且在尝试阅读文档后我觉得自己更愚蠢。

如何为以下内容设置 .htaccess:

  1. 任何时候有人去 www.foosite.com 它应该重定向到 www.foosite.com/content/

  2. 任何时候有人去 dev.foosite.com 它应该重定向到 dev.foosite.com/content/

谢谢...

4

1 回答 1

1

您已经RedirectMatch设置了指令,以便它生成到绝对 URL 的重定向,而您真正需要的是相对 URL - 也就是说,重定向不应替换 URL 的原始主机名,因此无论如何它都可以工作在哪个站点上调用它。为此,请将 RedirectMatch 行(理想情况下在两个站点上,但至少在 dev 子域上)更改为:

RedirectMatch permanent ^/$ /content/

(在开发站点中更改www.foosite.com为会产生相同的效果,但如果您修改子域名或制作站点的另一个副本,则需要再次更改它。上述更改避免了该问题。)dev.foosite.com.htaccess

如果您有兴趣,关于可能的增强的另一个注意事项:您的指令目前丢弃任何路径信息,因此如果有人去 eg http://[www|dev].foosite.com/old/path/to/page.html,她将被重定向到.../content/,而不是.../page.html; 为了保留路径信息,假设需要这样做,您可以:

RedirectMatch permanent ^/(.*)$ /content/$1

或类似的东西,假设 a) 曾经有一段时间你网站上的 URL 不需要/content/,并且 b) 在旧 URL 约定和新 URL 约定之间存在一致的映射方式。

于 2013-05-28T21:17:21.523 回答