htaccess重写www到非www和新目录之间的冲突

时间:2016-12-15 14:30:50

标签: apache .htaccess redirect mod-rewrite

好的,所以我有一个网站,我们强制从WWW重定向到非WWW版本的网站,因为我们使用的CMS只能处理每个站点一个realUrl参数。

我在系统中进行了一次通用重写,迫使所有WWW流量到现在WWW,如下所示:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

这适用于大多数网页。现在我遇到的问题是这个。我在站点中有一个新的子目录,我也将旧页面的所有流量重定向到新的子目录。像这样:

Redirect 301 /my-page/ /new-directory/my-page/

所以发生的事情是,如果有人来 http://example.com/my-page ,那么他们会被正确地重定向到 http://example.com/new-directory/my-page

但是,如果他们来到 http://www.example.com/my-page - 他们会被重定向到 http://example.com ,但永远不会回到 {{3 }} 即可。

如何克服这一点的任何帮助将非常感激。 :)

2 个答案:

答案 0 :(得分:0)

不要将Redirect指令与mod_rewrite规则混合使用。你有这样的规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,NE,L]

RewriteRule ^my-page(/.*)?$ /new-directory$1 [R=301,NE,NC,L]

在测试此更改之前清除浏览器缓存。

答案 1 :(得分:0)

如果您有权访问vhost配置,请确保您的ServerName不是www,并且www是ServerAilas