基于引用URL的重定向(不适用于查询字符串)

时间:2014-04-03 06:31:20

标签: php nginx

由于我们不再使用旧网站,我们已将www.old-domain.com重定向至www.new-domain.com
因此,www.old-domain.com/whatever重定向到www.new-domain.com/whatever。但这会导致404错误,因为我们没有这些页面。 所以我尝试将所有内容从旧域重定向到新域的主页:

if (isset($_SERVER['HTTP_REFERER']) && stripos($_SERVER['HTTP_REFERER'], 'old-domain.com') !== false) {
    @header("Location: http://new-domain.com/");
    exit;
}

这样可以正常工作,但不能使用网址中的查询字符串 例如:www.old-domain/whatever/?utm=123重定向到www.new-domain.com/?utm=123
请注意,查询字符串会保留在我不想要的新网址中。

请注意,我甚至使用了meta tag&基于Javascript的重定向但案例仍然相同。

无论如何要修复错误?非常感谢您的投入。 (我们正在使用nginx服务器)

由于 此致

2 个答案:

答案 0 :(得分:1)

将它放在你的nginx配置文件中。

server {
  server_name .old-domain.com;
  rewrite ^ http://new-domain.com/ permanent;
}

答案 1 :(得分:1)

最好不要让PHP参与这项工作。这更适合.htaccess。

将此规则放在root .htaccess中:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^ http://new-domain.com/? [L,R=301]

跟踪?将删除现有的查询字符串。