我有4个域名,我想他们中的3重定向到最后一个。我已经使用了一些htaccess规则,它们工作得很好,
RewriteEngine On
RewriteCond %{HTTP_HOST} ^first.com$ [NC]
RewriteRule ^(.*) http://www.forth.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.first.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^second.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.second.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.third.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^third.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [L,R=301]唯一的问题是,当我输入"www.first.com/about“时,它没有显示"www.forth.com/about”,只是显示了相同的内容。所有的域名都转发到forth.com,他们没有主机,所以我不能把那些其他域名的htaccess文件,请指导。将不胜感激。
发布于 2012-09-27 04:44:41
这是最有可能发生的事情,至少在我的测试用例中,这个修复可以处理它。
而不是使用L,R=301颠倒顺序,执行R=301,L。L表示最后,它结束计算在该点上要做什么的循环。我总是使用R=301,L,因为这是我在任何地方都能找到的例子。您的apache可能会命中L,并立即将新字符串传回URL解析器,而不会将其作为301重定向发送,因为它并没有走那么远。
同样,在上面的first.com代码片段中,您遗漏了^(.*)上的$-只是对于该行,不确定这是一个拼写错误还是在实际的.htaccess文件中丢失了它。
否则,您可以使用以下命令对其进行整理:
RewriteCond %{HTTP_HOST} ^((www.)?)first.com [NC,OR]
RewriteCond %{HTTP_HOST} ^((www.)?)second.com [NC,OR]
RewriteCond %{HTTP_HOST} ^((www.)?)third.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [R=301,L]https://stackoverflow.com/questions/12592723
复制相似问题