通知用户 301 重定向

Informing the user about a 301 redirect

考虑以下方案:

site A ------> site B (old URL)  --- 301 redirect ---> site C (new URL)

事情是这样的

用户访问站点 A。站点 A 包含 link 到站点 B(旧 URL)。当用户单击 link 到站点 B 时,他将被重定向到站点 C(新 URL)。站点 B 发出到站点 C 的重定向。

问题

当用户最终到达站点 C 时,我想通知他重定向。

我试过的

在 Javascript 或元刷新重定向发挥魔力之前,始终可以选择显示具有预定义超时的中间重定向页面,但我想避免这种方法并在新的网站,以避免混淆用户和网络爬虫,因为我读到 in-browser 重定向不如 server-side 重定向可靠。

解决这个问题的一般方法是什么?

更新: 从站点 B 重定向到 example.com/redirect.php?referrer_url=oldurl&redirect_to=newurl 怎么样?

然后 redirect.php 会将 oldurl 检测为推荐人 URL,将重定向消息闪现到 session 并发出 301 重定向到 example.com/newurl .从 SEO 的角度来看,这是个好主意吗?

您可以使用重定向发送您自己的 http-header,例如:

header('RedirectedFrom: www.something.com/ifoo/bar.html');

并在目标站点使用它来识别重定向

$headers = headers_list();
foreach($headers as $header) {
    list($name,$value) = explode(':',$header);
    if($value == 'RedirectedFrom') {
        // what ever you want to do
        break;
    }
}

我想出了以下解决问题的办法。

站点 B(旧 URL)被重定向到站点 C 的特定脚本,其工作是处理传入请求并在必要时执行重定向。

例如,如果用户浏览站点 A 并单击 link 到站点 B,他将被重定向到站点 C 的 redirect.php 脚本,该脚本接受两个 GET 参数:referrer_urldestinationreferrer_url 是站点 B 的旧 link,destination 是站点 C 的相对路径。

脚本然后确保 destination 不是绝对的 URL(以避免大量重定向到其他站点),将其附加到站点 C 的基础 URL 并重定向用户到适当的页面。 referrer_url 不是必需的,但它可用于检测旧站点 B URL 的域(以防有多个不同的域)。