我的htaccess如下:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.es$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.es$
RewriteRule ^(.*)$ http://www.domain.com/es [L,R=301]
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?section=$1 [QSA,L]
基本上它的功能是将所有域别名(即domain.mobi)重定向到domain.com,domain.es除外,它将被重定向到domain.com/es。然后是另一个附加查询字符串的重写(所以在后台,domain.com/test成为domain.com/index.php?section=test)
我的问题是,现在我需要从重定向中排除一个URL(www.domain.es/landing)(因此它保留在domain.es中),我无法使其工作。我已经尝试将此条件添加到前两个规则中以排除页面:
RewriteCond %{REQUEST_URI} !^/landing$
然后它转到www.domain.com/es?section=landing(不仅仍然重定向到domain.com;查询字符串出现在浏览器栏中)。有什么想法吗?
答案 0 :(得分:0)
您可以使用以下规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.es$ [NC]
RewriteCond %{THE_REQUEST} !/landing[\s?] [NC]
RewriteRule ^(.*)$ http://www.domain.com/es/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{THE_REQUEST} !/landing[\s?] [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?section=$1 [QSA,L]