如何才能将此.htaccess重定向排除在主页之外?

时间:2013-11-10 17:57:50

标签: apache .htaccess mod-rewrite redirect

我有这个设置:

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>

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

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

1 个答案:

答案 0 :(得分: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>