我有这个设置:
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>
这有效,但我想排除主页。如何为此添加附加条件?
编辑另外,我想排除名为“资产”的文件夹及其所有内容。
答案 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>