【问题标题】:PHP code to determine if a user was 301 redirected to my site确定用户是否被 301 重定向到我的网站的 PHP 代码
【发布时间】:2012-03-18 18:51:10
【问题描述】:

在 PHP 中是否可以知道用户是否已被 301 重定向到我的网站?

所以在 myoldsite.com 我在 .htaccess 文件中有一个 301 重定向到 mynewsite.com

我可以在 mynewsite.com 中放置一些 PHP 代码来识别用户何时被 301 重定向?如果是这种情况,我只需要它来显示特定消息。

非常感谢这里的任何指点 :-)

【问题讨论】:

  • @SalmanA: cookie 只能被旧站点看到,除非他专门做了一些 XSS 来读取它。
  • 你不能用get_headers()做这个吗?

标签: php mod-rewrite url-rewriting http-headers http-status-code-301


【解决方案1】:

我相信对于 301 重定向,HTTP_REFERER 字段将包含 原始 引用:

  • 用户在地址栏中输入 oldsite.com 并 301 重定向到 newsite.com
    • referer = ""
  • 用户正在访问 3rdparty.com,单击指向 oldsite.com 的链接并 301 重定向到 newsite.com
    • referer = "3rdparty.com"

这种行为对 301 重定向有点意义。

解决方案:我认为您应该在您的 301 响应中添加一个查询字符串参数,例如 ref=oldsite,并在您的新网站上检查它的值。

如果您担心 URL 中包含查询字符串参数,您可以告诉搜索引擎忽略特定的查询字符串参数。该过程因搜索引擎而异。显然有一个适用于所有主要搜索引擎的技巧:<link rel="canonical"> 标签。例子:

  • http://newsite.com/?ref=oldsite
    • http://newsite.com/
  • http://newsite.com/?ref=oldsite&page=main
  • http://newsite.com/?page=main&ref=oldsite
    • http://newsite.com/?page=main

【讨论】:

  • 感谢您的回复,Salman :-) 所以我的 .htaccess 可以显示为:RewriteEngine On Redirect 301 /index.php?ref=oldsite http://www.newsite.com/ 并且在“newsite.com”上有一个检查 ref 是否等于 oldsite 的脚本?
  • 是的想法是对的,但不确定Rewrite的语法,也许应该是Redirect 301 /index.php http://newsite.com/?ref=oldsite
  • 那应该是“现在告诉...”。出于兴趣,我如何在网站管理员工具中实现这一点?
  • 告诉搜索引擎他们应该忽略ref=whatever 参数的跨搜索引擎方法是使用link rel="canonical" 标记。 newsite.com 主页的规范 URL 将是 newsite.com plus(查询字符串减去 ref=whatever,如果有查询字符串)
  • 完美。我现在正在使用(伪代码)if ($script == index.php) then <link rel="canonical" href="http://www.newsite.com/" /> end if。这很好吗?
猜你喜欢
  • 2012-01-30
  • 2011-07-03
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2020-01-08
  • 2016-01-26
  • 2017-02-04
  • 2023-03-02
相关资源
最近更新 更多