由于营销原因,我使用一些虚荣网址进行更友好的访问,并跟踪某些广告系列。不幸的是,我使用cPanel停留在托管专用服务器上,这些是我编写规则的步骤:
xyz.com
和efg.com
添加到我的cPanel中的托管域RewriteRule
的.htaccess
RewriteCond %{HTTP_HOST} ^xyz\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.xyz\.com$
RewriteRule ^signdirections$ "http\:\/\/xyz\.abc\.com\/en?utm_source=signdirections&utm_medium=advert&utm_campaign=xyz" [R=301,L]
RewriteCond %{HTTP_HOST} ^efg\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.efg\.com$
RewriteRule ^signdirections$ "http\:\/\/efg\.abc\.com\/en?utm_source=signdirections&utm_medium=advert&utm_campaign=efg" [R=301,L]
现在问题是,如果我尝试访问www.efg.com/signdirections
,我会被重定向到www.xyz.com/signredirections
版本,而不是efg的版本。
任何想法,为什么会这样?我的直觉是,它检测到相同的主机名(HTTP_HOST),但我不明白为什么。
答案 0 :(得分:2)
由于您的其他规则,很可能会发生这种情况。最好使用在应用其他规则后不会发生变化的THE_REQUEST
变量。
您还可以将两个规则合并为一个:
RewriteCond %{HTTP_HOST} ^(?:www\.)?(xyz|efg)\.com$ [NC]
RewriteCond %{THE_REQUEST} /signdirections [NC]
RewriteRule . http://%1.abc.com/en?utm_source=signdirections&utm_medium=advert&utm_campaign=%1 [R=301,L,NE,QSA]
RewriteEngine On
行以下的第一条规则。答案 1 :(得分:0)
我不知道,如果在测试结果不好后可能出现缓存错误:
How long do browsers cache HTTP 301s?
只是一个简化版本:
RewriteCond %{HTTP_HOST} ^(?:www\.)?xyz\.com$
RewriteRule ^signdirections$ http://xyz.abc.com/en?utm_source=signdirections&utm_medium=advert&utm_campaign=xyz [R=302,L]
RewriteCond %{HTTP_HOST} ^(?:www\.)?efg\.com$
RewriteRule ^signdirections$ http://efg.abc.com/en?utm_source=signdirections&utm_medium=advert&utm_campaign=efg [R=302,L]
尝试使用R = 302,当一切正常时,更改为R = 301