Глюк WordPress – 4 адреса для одного поста! » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




Глюк WordPress – 4 адреса для одного поста!

Автор DimoninG, написано 22.09.2008
Рубрика Google, Советы и ошибки, Яндекс, на WordPress  

Постовой (купить!): системы очистки воды

Вы в курсе, что 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/



Отзывов (13) на «Глюк WordPress – 4 адреса для одного поста!»


ae471697

    пишет:

    Мне больше по душе с «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 из строки браузера.


    пишет:

    Мда, сильно покоцало мой каммент. Вроде использовал тег code :(


    пишет:

    А вот в этой строчке «RewriteCond %{HTTP_HOST} !^blog\.ru», также надо поменять blog\.ru на адрес своего блога, т.е. myblog\.ru ???


    пишет:

    Сейчас все-таки лучше без ввв, т.к. нет особого смысла (если, конечно, нет еще парочки поддоменов). А у самой ссылки нормальных только два варианта – с .html в конце (страница) и со слешом (папка с неуказанным index.php).

    Опять же, у меня складывается ощущение, что ВП делает переход от ввв к нужному сам (там же есть переменная bloginfo['site_url']). Неустановленный слеш также поставился автоматически редиректом. К тому же, ситуация с поисковиками надуманная – страницы просто склеятся, а главной будет выбрана та, на которую ведет больше ссылок на самом сайте.

    И да, если уж речь об определении – с ввв или без, то стоит еще в гугл.вебмастере установить главный домен для правильной склейки (на всякий случай), а для Яндекса прописать в роботс.тхт пункт «хост».


    пишет:

    SEOinSoul, да, именно так.


    пишет:

    С .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, но я это не пробовал.


    пишет:

    DimoninG, поставьте, пожалуйста, плагин для подсветки синтаксиса, а то код жутко бьется :-(


    пишет:

    о! В гугле постоянно такая штука происходит. Спасибо!


    пишет:

    С гуглом в последнее время вообще непонятные вещи происходят.


    пишет:

    мне не разу не мешало, что 4 адреса. По сути главным будет тот, который раскручивают, а остальные с ним сольются и все)


    пишет:

    Ух ну и задачку ты ламеру задал,пипец просто,но спасибо огромное.При установке кода были произнесены такие слова – нах,сцуко,пипец и т.д.В конце было одно но очень важное -зашибись))


    пишет:

    А так ли это? У wp прекрасный внутренний редирект. И если вы не накосячили в настройках и функциях то никаких повторенийй с www бех www не будет, так же как и / в конце в чпу ставится на автомате


    пишет:

    Простите за нубство… Такой вот вопрос (писать придется нудно и длинно, чтобы объяснить).
    В 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 – получил бесконечную переадресацию. Туплю где-то?


Оставьте свой комментарий

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->








Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.