在设置规范标签时,我发现我并没有从规范目的中得到所有的汁液......
GIVEN
目前丑陋的 url 像website.org/juice?ln=de
通过 apache 变得很好,可以以更用户友好的方式访问,比如website.org/de/juice
. 现在,在这个多语言网站中,我希望保持一致性,并且所有页面都将其语言作为一个文件夹。我希望搜索引擎能记住并喜欢那些/language/page
,而不是丑陋的对手/page?ln=language
。
问题 1:在我想如何使用 Canonical 将其传达给那里的搜索引擎方面,我是否走在正确的轨道上?
目前,该代码删除了不必要的字符串,因此规范 url 很短:
当 URL = http://website.org/de/juice?ln=whatever
canocal url= http://website.org/de/juice
到目前为止还不错,但是,它不会重写在网络上漫游的旧文件/旧的搜索引擎缓存,因此以下情况会出错:
当 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?=