如果用户通过http://mysite或http://www.mysite
访问了该网站,我就强制更改网址但是目前我只检查该网站是否与http://store
的主要子域不相等我还有另一个子域,但这也被覆盖了,所以我需要改变我当前代码的工作方式:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^store\.mysite\.com [NC]
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L]
我更愿意检查网址是否为以下任何一种:
http://mysite.com
http://www.mysite.com
...然后应用重写规则,如何更改我的重写条件才能执行此操作?
答案 0 :(得分:4)
尝试这个 - 在这里工作得很好:
RewriteCond %{HTTP_HOST} ^(mysite\.com|www\.mysite\.com)$ [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]
QSA
标记,因为它是301重定向(取决于您的实际网址) - [R=301,QSA,L]
。其他方法:
1)每个域名的单独条件(需要指定需要使用OR
逻辑而不是默认AND
):
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]
2)与上面相同..但使用纯文本比较而不是正则表达式:
RewriteCond %{HTTP_HOST} =mysite.com [NC,OR]
RewriteCond %{HTTP_HOST} =www.mysite.com [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]
答案 1 :(得分:1)
到目前为止,我已经这样做了:
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{HTTP_HOST} www\.mysite\.com [NC]
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L]
可以对此进行任何改进吗?
实际上第一个RewriteCond没有检测到http://mysite.com