Как переписать 301 старые уродливые URL в новые украшенные рабочие URL? - PullRequest
0 голосов
/ 05 марта 2011

маленькая проблема, которая зудит меня в течение последних месяцев. Сначала хорошие новости: с помощью массового SO-сообщества я смог переписать свои уродливые URL-адреса в хорошие: например, website.com/page.ast?ln=nl в website.com/nl/page

Но

Google показывает ужасные URL в их поиске:

website.com/nl/page.ast?ln=fa

Код страницы моего сайта имеет канонические настройки:

<link rel="canonical" href="http://website.com/nl/page">
<meta name="original-source" content="http://website.com/nl/page"/>

Однако результаты, по-видимому, все еще индексируются под неправильными, уродливыми URL-адресами!
Q1. Почему Google игнорирует более красивую каноническую ссылку?


Возможно, тогда лучше всего сделать это механическим способом: перенаправить эти website.com/nl/webpage.ext?ln=yy на website.com/nl/webpage, по существу удалив несессерную часть, которая ничего не делает .XXX?ln=YYYY (где XXX - это расширение на 2 или 3 символа, а YYY - язык (может быть nl, be, fr, но также zh-CN и т. д.)

EXAMPLE OF UGLY OLD FILES   THEIR NICE BEAUTIFIED URLS
/en/somepage.ast?ln=fr          /en/somepage
/fr/home.php?ln=zh-CN           /fr/home
/xx/zzzzzz.ext?ln=yyyy          /xx/zzzzzzz
/xx/zzzzzz?ln=yyyy              /xx/zzzzzzz
/xx/zzzzzz.ext                  /xx/zzzzzzz

Q2. Как переписать все некрасивые файлы в красивые URL-адреса сразу? Софар, предварительный дизайн

RewriteRule   /XX/ZZZZ(.*anything after and including the dot)  /XX/ZZZZ [R=301]

Итак, что вы рекомендуете? Я вижу предложения как возможные ответы. Большое спасибо заранее!

1 Ответ

1 голос
/ 05 марта 2011
  1. Канонический URL говорит, что основной URL, представляющий этот контент, отличается.Это все еще другой URL для Google. Он придаст некоторый вес каноническому URL, но не может удалить старый URL и помешает вам продублировать содержание.Используется специально, когда у вас есть URL-адреса, к которым добавляется какой-либо параметр запроса, связанный с контентом.http://something.com/1234/234?ref=g1 и http://something.com/1234/234?ref=widardnb одинаковые для вас URL, но Google будет рассматривать их как разные URL, теперь в этом случае вы даете канонический URL http://something.com/1234/234.Это вы, поскольку вы не можете контролировать то, что люди, подобные партнерской программе, могут добавлять к вашему URL.

  2. Если вы хотите на самом деле постоянно показывать только украшенные URL-адреса пользователям.Затем вам нужно выполнить редирект 301.

Для этого используйте mod_rewrite в конфигурационном файле apache.

LoadModule rewrite_module /path/to/modules/dir/mod_rewrite.so

RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ~ !^$ [OR]   #Query string is not empty
RewriteCond %{REQUEST_URI} ~ ^(.*)\.(.*)$ #Your url path have . in between
RewriteRule .*  %1 [R=301,L]  #then redirect to path without extension (else all are handled as it is).

Также включить перезапись журнала

RewriteLog "/path/to/log/directory/rewrite.log" #change the directory name
RewriteLogLevel 9  #this will help you understanding whats happening behind (disable this once everything starts working) 

Я не проверял это, но сообщите мне в случае любой ошибки.

...