1

我有这个设置:

http://example.com
http://www.example.com

http://www2.example.com

我想将除主页外的所有页面从第一组重定向到较新的 (www2) 域。

这是我现在的 .htaccess 中的内容:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC]
    RewriteRule ^(.*)$ http://www2.example.com/$1 [L,R=301]
</IfModule>

这可行,但我想排除主页。如何为此添加附加条件?

编辑:另外,我想排除一个名为“assets”的文件夹及其所有内容。

4

1 回答 1

1

您可以将您的正则表达式更改为.+,这意味着至少一个或多个.,其中.可以是任何东西:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC]
    RewriteRule ^(.+)$ http://www2.example.com/$1 [L,R=301]
</IfModule>

这里的原因是主页(请求 URI = /)将剥离斜杠,实际上是一个空字符串,它.*匹配。但如果你有.+,空字符串(主页)将不匹配。

如果主页不仅仅是/(如,/home.html),那么您可以像这样排除它:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/home\.html
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC]
    RewriteRule ^(.*)$ http://www2.example.com/$1 [L,R=301]
</IfModule>
于 2013-11-10T18:04:42.057 回答