我遇到了一个我想要解决的重复内容的常见错误:
浏览器中的超链接显示:http://website.org/nl/amsterdam
现在,这不是规范网址,我希望将网页重定向到其已知的规范网址(条件是当前网页不是规范网页)
<?php $canonical = "http://website.org/nl/amsterdam-grass-is-greener;
header("HTTP/1.1 301 Moved Permanently" );
header("Status: 301 Moved Permanently" );
header("Location: " . $canonical); // shows below picture, while url looks good
exit(0);
<html><head><link rel="canonical" href="<?=$canonical?></head>...</html>
主要问题:如何让这个工作?目前非规范网址似乎想要直接指向规范网址(通过HEAD信息测试),但一旦到达那里,PHP就会卡住并显示:
次要问题:这个想法对您来说听起来不错吗?由于搜索引擎不严格使用规范,只能将其用作提示,通常会保存错误的非规范网址。上述规则是否通过301重定向使搜索引擎在搜索结果中保存好的版本更强大?这是否也解决了我的重复内容网址问题?
答案 0 :(得分:1)
尝试:
if(isset($canonical) && ('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] != $canonical)) {
header ('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $canonical);
exit();
}
要回答您更常见的问题,这不是一个可行的解决方案(除非您的网站非常小),因为它要求您对每个网页的规范网址进行硬编码。尽可能接近,您应该创建一个每个资源只有一个URI的URL结构。但是,它确实解决了搜索引擎感知重复内容的直接问题。
编辑:感谢Gumbo。
答案 1 :(得分:1)
似乎规范尝试重定向。
您必须使用一些HTTP嗅探器来查看按下某个按钮时实际发生的情况。让自己像LiveHTTPHeaders一样添加任何其他内容的Firefox附件,并查看重定向的内容。