多个停放域的重定向不适用于文件名

时间:2012-12-21 17:50:06

标签: apache .htaccess mod-rewrite redirect url-rewriting

我的问题对我来说似乎很简单,但我找不到一个简单的解决方案。这里是:我有一个主域,多个域指向该主域。为了避免重复内容,我正在尝试将所有“辅助”或“停放”域重定向到我的主域,以便它解析为:

  • www.parkeddomain1.com => www.maindomain.com
  • www.parkeddomain2.com => www.maindomain.com
  • www.parkeddomain3.com => www.maindomain.com

等等......

现在我发现这个htaccess代码是一种全能的解决方案(我更喜欢):

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.maindomain.com$
RewriteRule ^(.*)$ http://www.maindomain.com/$1 [R=301]

因此,当我只处理直接停放的域时,此代码可以正常工作,而不是使用带有子文件夹或子文件的停放域。所以:

  • www.parkeddomain1.com => www.maindomain.com

重定向在这里运行正常但是当我添加一个子文件夹时会发生这种情况:

  • www.parkeddomain1.com/subfolder/ => www.parkeddomain1.com/subfolder /

当我正在寻找的是:

  • www.parkeddomain1.com/subfolder/ => www.maindomain.com/subfolder /

这一切都是为了避免搜索引擎出现重复内容问题。

感谢所有人给我提供解决方案的答案。

干杯!

3 个答案:

答案 0 :(得分:3)

如果提问者开始使用[R=301] 301重定向(又名“永久重定向”)重写裁决,然后他会尝试查看其网址 www.parkeddomain1.com/subfolder/ 但规则的结果并不是他想要的,然后即使他尝试更改重定向规则,他的网络浏览器也会始终将该网址重定向到第一个用[R=301]标志重定向的网址。因为一旦浏览器被永久地重定向到错误的地址,甚至编辑规则的次数,您的浏览器仍将被重定向到旧地址,这是浏览器的事情,您甚至可以继续修复规则,然后在不知情的情况下重新改变规则。更改浏览器中的301重定向可能需要很长时间才能显示。

解决方案是重新启动Web浏览器,或使用其他浏览器。因此,如果您正在测试,最好使用[R]标志而不是[R=301]标志。当您100%确定规则完全符合预期时,请将其切换为[R=301]标志。或者,此问题属于Server Fault

答案 1 :(得分:2)

如果您的唯一目的是安抚搜索引擎,您也可以指定一个规范网址,告知搜索引擎一段内容的权威网址。因此,即使相同的内容由几个不同的查询字符串变体或几个不同的域提供,规范URL也会告诉搜索引擎这些只是一个真实URL的替代品。

有关详细信息,请参阅Google Webmaster Central Blog about Canonical URLs

答案 2 :(得分:1)

尝试在301

之后添加“L”
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.maindomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]