在设置Canonical标签时,我发现我没有从规范目的中获得所有的汁液......
GIVEN
目前,像website.org/juice?ln=de
这样丑陋的网址通过apache变得很好,可以用更友好的方式访问,比如website.org/de/juice
。现在,在这个多语言网站中,我希望一致性和所有页面都将其语言作为文件夹。我希望搜索引擎能够记住并更喜欢那些/language/page
而不是他们丑陋的对手/page?ln=language
。
问题1:我是否想要使用Canonical将其与搜索引擎进行通信,从而在正确的轨道上安抚?
CURRENTLY 代码删除了不必要的字符串,以便规范网址很短:
当网址= http://website.org/de/juice?ln=whatever时
canocal url = http://website.org/de/juice
Sofar这么好,但是,它不会重写在网络/旧搜索引擎缓存中漫游的旧文件,因此出现以下情况: 当URL = http://website.org/juice?ln=xyz(缺少语言文件夹)时 然后规范成为= http://website.org/juice(而它应该是http://website.org/xyz/juice
问题2:我应该在我的代码中添加什么,为了识别没有设置语言文件夹的情况,可以改进/简化我的规范?
<?php
$domain = $_SERVER['HTTP_HOST']; #domain like website.org
$qsIndex = strpos($extensions, '?'); # strip off of string/query part (?ln=xyz)
$pageclean = $qsIndex !== FALSE ? substr($extensions, 0, $qsIndex) : $extensions;
$canonical = "http://" . $domain . $pageclean;
?>
<html><head><link rel="canonical" href="<?=$canonical?>"></head>...
注意:语言可以是{de,nl,es,it,en,la,....还有zh-CN,zh-TW},所以无论ln?=
答案 0 :(得分:0)
好吧,你的网页
不是网址,但网页知道它是什么语言?如果是,只需在规范URL中添加语言信息,如果页面不知道它是什么语言(并且您无法找到),则只需选择默认语言参数即可。从搜索引擎优化的角度来看并不完美,但比让这些旧网址保持/流浪更好。
作为降落伞你可以使用新的<link rel="alternate" ...>
标记以软化该效果。
答案 1 :(得分:0)
在需要时将正确的子域放在规范上。像这样:
<?php
$domain = $_SERVER['HTTP_HOST']; #domain like website.org
$qsIndex = strpos($extensions, '?'); # strip off of string/query part (?ln=xyz)
$pageclean = $qsIndex !== FALSE ? substr($extensions, 0, $qsIndex) : $extensions;
$canonicalDomain = $domain;
if ($canonicalDomain == 'website.org'){
$canonicalDomain = $_GET["ln"].".".$canonicalDomain;
}
$canonical = "http://" . $canonicalDomain . $pageclean;
?>
<html><head><link rel="canonical" href="<?=$canonical?>"></head>...