【问题标题】:redirect domains and subfolder to new domain htaccess将域和子文件夹重定向到新域 htaccess
【发布时间】:2012-09-17 13:08:15
【问题描述】:

我有 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文件,请指导。将不胜感激。

【问题讨论】:

  • 请澄清一件事,当您说“唯一的问题”是它不显示新域时 - 您的意思是它根本不起作用并且不重定向吗?或者您的意思是它确实重定向并且只是不更改浏览器 url 字段中的主机名?另外,“第一”是唯一不起作用的还是它们都有相同的行为?
  • 是的,它确实重定向,但在浏览器地址栏上,显示旧地址,并且只有当 url 带有子文件夹时,如果我输入 URL 本身,它也会重定向并更改名称。并且所有三个域都对子文件夹执行相同的行为,谢谢

标签: .htaccess mod-rewrite redirect dns subdirectory


【解决方案1】:

这很可能是正在发生的事情,至少在我的测试用例中,这个修复处理了它。

而不是使用 [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]

【讨论】:

  • 谢谢彼得,但首先最后的 OR 完全阻止了我的网站,在我删除 OR 之后,它的行为与以前相同,我确实更改了 L 的位置,实际上没有任何变化。 $ 是一个错字。
  • 在最后一个 OR 上完全正确,编辑以上内容进行修复。我可以进行更多测试,但这应该可以。
  • 我用全新的 apache 安装设置了一个本地环境,并将上面的内容复制为 .htaccess,在我的 @987654323 中为 first.com、second.com 和 third.com 输入 127.0.0.1 @ 文件,然后使用 www.google.com 作为重定向站点。无论是否指定文件或仅指定域名,它都可以使用,并且确实会更改浏览器中的 URL。唯一添加的步骤是确保在您的httpd.conf 中正确设置AllowOverride。我使用 All 进行测试,默认情况下它是 None 并且不会那样工作。
猜你喜欢
  • 2013-11-08
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2014-03-17
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多