我有两个域名。
我们只是打电话给他们
example.com
和example.de.
现在,当有人在地址中输入example.com
时,他会访问我的网站example.com
。但是,如果用户输入example.de
,他将被重定向到example.com/de
。路径也是如此:
example.de/a
=> example.com/de/a
我现在想要实现的目标是,"具体"网址不应该被重定向。
所以,而
example.de/a
仍应重定向到example.com/de/a/
example.de/b/
应保留example.de/b/
所以,目前我的.htaccess,其中一部分,看起来像这样
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{http_host} example\.de [NC]
RewriteRule ^(.*)$ http://www.example.com/de/$1 [L,R=301]
现在,我想排除特定的网址,所以我到目前为止做的是以下内容
RewriteCond %{http_host} example\.de [NC]
RewriteCond %{REQUEST_URI} !/b
RewriteRule ^(.*)$ http://www.example.com/de/$1 [L,R=301]
问题是,.de/b
仍然重定向到.com/de/b
另一部分可能对您感兴趣的是,在.htaccess
的最后一行,我将任何不以.com
结尾的内容重定向到.com
。
### SUBDOMAIN REDIRECT *.DOMAIN.TLD -> www.DOMAIN.TLD
RewriteCond %{http_host} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
那么,任何人都有任何想法,有什么可以解决这个问题?
我现在已将我的.htaccess更改为此
### SUBDOMAIN REDIRECT *.DOMAIN.TLD -> www.DOMAIN.TLD
RewriteCond %{http_host} example\.de [NC]
RewriteCond %{THE_REQUEST} !/b
RewriteRule ^(.*)$ http://www.example.com/de/$1 [L,R=301]
### SUBDOMAIN REDIRECT *.DOMAIN.TLD -> www.DOMAIN.TLD
RewriteCond %{http_host} !^www\.example\.com [NC]
RewriteCond %{THE_REQUEST} !/b
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
但问题仍然存在。 :(
答案 0 :(得分:1)
您最好在条件中使用THE_REQUEST
变量:
RewriteCond %{http_host} example\.de [NC]
RewriteCond %{THE_REQUEST} !/b
RewriteRule ^(.*)$ http://www.example.com/de/$1 [L,R=301]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1
。