PHP: Канонический URL еще не подтвержден на многоязычном веб-сайте.Как сделать это более последовательным? - PullRequest
0 голосов
/ 31 декабря 2010

Устанавливая тег Canonical, я обнаружил, что я не получаю весь сок из канонической цели ...

ДАН В настоящее время сделаны ужасные ссылки типа website.org/juice?ln=deхороший через apache, доступный более удобным для пользователя способом, как website.org/de/juice.Теперь, на этом многоязычном веб-сайте, я хочу, чтобы последовательность и все страницы имели свои языки в виде папки.Я хочу, чтобы поисковые системы запомнили и предпочли эти /language/page, а не их уродливые аналоги /page?ln=language.

Вопрос 1: Могу ли я сориентироваться на правильном пути, как я хочуиспользовать Canonical, чтобы сообщить об этом поисковым системам?

CURRENTLY код удаляет ненужные строки, поэтому канонические URL-адреса короткие:
когда URL = http://website.org/de/juice?ln=whatever
canocal url= http://website.org/de/juice

Софар настолько хорош, НО , он не перезаписывает старые файлы, перемещающиеся в кэш-памяти поисковой системы net / old, и поэтому следующие ситуации идут не так:
когда 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, эс, это, ан, ля, .... но тоже ж-кн, ж-тв} так что бы это ни было после ln?=

Ответы [ 2 ]

0 голосов
/ 18 февраля 2013

Поместите правильный поддомен в каноническое при необходимости.Как то так:

<?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>...
0 голосов
/ 04 января 2011

хорошо, ваша страница

не URL, а страница знает, какой это язык? если да, просто добавьте информацию о языке в канонический URL, если страница не знает, какой это язык (и у вас нет возможности узнать), вам просто нужно будет выбрать языковой параметр по умолчанию. не идеален с точки зрения SEO, но гораздо лучше, чем когда эти старые URL остаются / блуждают.

в качестве парашюта вы можете использовать новый <link rel="alternate" ...> отметьте, чтобы смягчить этот эффект.

...