0

在设置规范标签时,我发现我并没有从规范目的中得到所有的汁液......

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?=

4

2 回答 2

0

好吧,你的页面

不是 URL,而是页面知道它是什么语言?如果是,只需在规范 URL 中添加语言信息,如果页面不知道它是什么语言(并且您无法找到),您只需选择默认语言参数。从 SEO 的角度来看并不完美,但比让这些旧 URL 停留/徘徊要好得多。

作为降落伞,您可以使用新 <link rel="alternate" ...> 标签来柔化这种效果。

于 2011-01-04T12:00:45.077 回答
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>...
于 2013-02-18T11:58:37.883 回答