考虑以下方案:
site A ------> site B (old URL) --- 301 redirect ---> site C (new URL)
用户访问网站A.网站A包含指向网站B(旧网址)的链接。当用户单击指向站点B的链接时,他将被重定向到站点C(新URL)。站点B发布重定向到站点C。
当用户最终到达站点C时,我想通知他重定向。
HTTP_REFERER
标头,但是引荐网址似乎指向网站A.我希望它引用网站B.我错过了相关的内容301重定向和这个特定标题的实现?我知道它是由浏览器设置的,可能会出现意外行为,但为什么不能指望它引用站点B(发出重定向的那个)??redirected=1
查询字符串附加到新网址的末尾听起来像是一个解决方案,但它需要a)确保规范网址到位以避免重复内容和b)搞砸新内容我希望在地址栏内保持尽可能干净的网址; 总有一个选项可以显示具有预定义超时的中间重定向页面,直到Javascript或元刷新重定向执行魔术,但我想避免这种方法并在新网站中显示消息,以避免混淆两者用户和网络抓取工具,因为我读过浏览器内的重定向不如服务器重定向那么可靠。
解决这个问题的一般方法是什么?
更新:如何将网站B重定向到example.com/redirect.php?referrer_url=oldurl&redirect_to=newurl
?
然后redirect.php
会将oldurl
检测为引荐来源网址,将重定向消息刷新到会话并发送301重定向到example.com/newurl
。从SEO的角度来看,这是一个好主意吗?
答案 0 :(得分:1)
您可以使用重定向发送您自己的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;
}
}
答案 1 :(得分:1)
我想出了以下问题的解决方案。
站点B(旧URL)被重定向到站点C的特定脚本,其作用是处理传入请求并在必要时执行重定向。
例如,如果用户浏览网站A并点击指向网站B的链接,则会将其重定向到网站C的redirect.php
脚本,该脚本接受两个GET参数:referrer_url
和destination
。 referrer_url
是指向网站B的旧链接,destination
是网站C的相对路径。
然后,脚本确保destination
不是绝对URL(以避免大量重定向到其他站点),将其附加到站点C的基本URL并将用户重定向到适当的页面。 referrer_url
不是必需的,但可以用于检测旧网站B网址的域名(如果有多个不同的域名)。