|
Постовой (купить!): системы очистки воды
Вы в курсе, что WordPress предоставляет доступ к одному и тому же посту по четырем разным адресам? Вот так:
http://www.blog.ru/post
http://www.blog.ru/post/
http://blog.ru/post
http://blog.ru/post/
Чем конкретно это грозит?
Поисковики расценивают это, конечно, как 4 разные страницы, когда на самом деле – это один пост. Соответственно поисковик может присваивать одним адресам одни значения при ранжировании, а другим – другие. Скажем, если на Вас поставили ссылку http://blog.ru/post, а на самом деле Вы раскручивали эту страницу по адресу http://www.blog.ru/post/, то дорогостоящая естественная ссылка окажется бесполезной.
Вот как от этого избавиться. Во-первых, нужно включить постоянные ссылки (ЧПУ) в админке блога (хотя это уже должно быть сделано, если ссылки образовываются именно такие). Во-вторых, добавьте в файл .htaccess следующий код:
Options +Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog\.ru
RewriteRule ^(.*)$ http://www.blog.ru/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.blog.ru/$1/ [L,R=301]
Этот код сделает все ссылки вида http://www.blog.ru/post/
Если Вам нужно, чтобы адреса были без WWW, то код будет следующий:
Options +Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond ${HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^blog\.ru
RewriteRule (.*) http://blog.ru/1 [L,R=301]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://blog.ru/1/ [L,R=301]
Просто замените blog.ru на адрес Вашего блога в этом или предыдущем коде.
Вольный перевод http://www.jimwestergren.com/wordpress-users-sharpen-your-urls-with-google/
Оставьте свой комментарий
|
22.09.2008 в 5:04 дп
Мне больше по душе с «www» и без слешей. На nginx иногда делаю, вот так:
server {server_name domain.ru;
rewrite ^(.*)$ http://www.domain.ru$1 permanent;
}
server {
server_name http://www.domain.ru;
##
location / {
##
if (!-e $request_filename) {
rewrite ^(.*)\/$ $1 permanent;
##
}
##
}
}
Хотя особо не замутняюсь на эту тему, т.к когда люди ставят ссылки, они обычно берут uri из строки браузера.
22.09.2008 в 5:07 дп
Мда, сильно покоцало мой каммент. Вроде использовал тег code
22.09.2008 в 4:52 пп
А вот в этой строчке «RewriteCond %{HTTP_HOST} !^blog\.ru», также надо поменять blog\.ru на адрес своего блога, т.е. myblog\.ru ???
22.09.2008 в 7:29 пп
Сейчас все-таки лучше без ввв, т.к. нет особого смысла (если, конечно, нет еще парочки поддоменов). А у самой ссылки нормальных только два варианта – с .html в конце (страница) и со слешом (папка с неуказанным index.php).
Опять же, у меня складывается ощущение, что ВП делает переход от ввв к нужному сам (там же есть переменная bloginfo['site_url']). Неустановленный слеш также поставился автоматически редиректом. К тому же, ситуация с поисковиками надуманная – страницы просто склеятся, а главной будет выбрана та, на которую ведет больше ссылок на самом сайте.
И да, если уж речь об определении – с ввв или без, то стоит еще в гугл.вебмастере установить главный домен для правильной склейки (на всякий случай), а для Яндекса прописать в роботс.тхт пункт «хост».
22.09.2008 в 9:04 пп
SEOinSoul, да, именно так.
24.09.2008 в 2:18 дп
С .htaccess осторожнее, ибо всеми переписываниями занимается wp-includes/rewrite.php (если я правильно помню); лишние RewriteRule’s могут нарушить его работу (два раза видел такую ситуацию).
В идеале должно быть что-то такое:
function permalink_redirect()
{
if ($_GET || $_SERVER['QUERY_STRING'] != "" || substr($_SERVER['REQUEST_URI'],-1) == "?") {
if (!is_search() && !is_preview()) {
if (is_single() || is_page()) {
$url = get_permalink($post->ID);
}
else if (is_category()) {
$url = get_category_link($cat);
}
else if (is_tag()) {
$url = get_tag_link($tag_id);
}
else {
return;
}
wp_redirect($url, 301);
die();
}
}
}
add_action('get_header', 'permalink_redirect', -10);
URL с датой/времени в параметрах, а также автором WordPress разбирает сам.
Возможно, хук стоит вешать не на get_header, а на pre_get_posts, но я это не пробовал.
24.09.2008 в 2:19 дп
DimoninG, поставьте, пожалуйста, плагин для подсветки синтаксиса, а то код жутко бьется
25.09.2008 в 10:33 пп
о! В гугле постоянно такая штука происходит. Спасибо!
06.10.2008 в 2:52 пп
С гуглом в последнее время вообще непонятные вещи происходят.
12.10.2008 в 7:25 пп
мне не разу не мешало, что 4 адреса. По сути главным будет тот, который раскручивают, а остальные с ним сольются и все)
21.10.2008 в 6:38 пп
Ух ну и задачку ты ламеру задал,пипец просто,но спасибо огромное.При установке кода были произнесены такие слова – нах,сцуко,пипец и т.д.В конце было одно но очень важное -зашибись))
20.11.2008 в 5:17 дп
А так ли это? У wp прекрасный внутренний редирект. И если вы не накосячили в настройках и функциях то никаких повторенийй с www бех www не будет, так же как и / в конце в чпу ставится на автомате
14.03.2009 в 11:33 дп
Простите за нубство… Такой вот вопрос (писать придется нудно и длинно, чтобы объяснить).
В xap-е (он же tnx) при просмотре своих сайтов
http://member.tnx.net/reguser.php?mod=sites
используется показатель, рассчитываемый
http://www.site-rank.com/
Так вот, у меня блог поднят с урлом без www.
А этот site-rank при оценке смотрит именно урлы с www (соответственно, оценка видимо занижена получается)
Вот пример:
http://www.google.com/search?&q=allinurl:www.detiveka.ru/+site:www.detiveka.ru
Как сделать так, чтобы стали работать страницы с www – но с сохранением и без www так как иначе будут потери в индексах поисковиков (которые сейчас, я так понимаю, проиндексированы и прокешированы без www)? Пробовал прописать в .htaccess форвард с www на без www – получил бесконечную переадресацию. Туплю где-то?