Проблема с 301 редиректом и Wordpress или Почему не индексирует Яндекс
16.03.2008 от Иван ШиркоСтраница: 1 2
После переезда на свой хостинг и на новый движок Wordpress, я стал ждать индексации в поисковиках. Через пару дней некоторые страницы уже были в индексе Google и почти все страницы в Яндексе, через который в первые же дни начали приходить первые посетители. Прошла неделя и сайт выпал из Яндекса. Намертво. Осталась только главная страница, и то в поиске она была «проиндексирована по ссылке», и вместо заголовка отображался url. Я задумался, не помогло. Тогда, решив, что просто сначала сайт был проиндексирован «быстроботом» Яндекса, я успокоился и стал ждать, пока попаду в основной индекс… Через пару дней абсолютно случайно я заметил, что при обращении к сайту возвращается ответ не 200, типа все OK, а 301, который означает, что сайт переехал. Причем, если обратиться к http://delphiblog.ru/, то новое место сайта оказывается тоже http://delphiblog.ru/. Я сразу обратился в саппорт хостинга. Мне оперативно подтвердили, что да, возвращается 301, смотрите скрипты на сайте.
Я провел маленький эксперимент: проверил, какой ответ возвращается при обращении к статичному файлу на сайте, delphi.jpg. Ответ был 200. Оказалось, что дело в Wordpress: при обращении к любому разделу блога выдавало 301, как с www, так и без. После скармливания признаков гуглю, выяснилось, что такая проблема не только у меня, и, судя по всему, проявлялась она только в некоторых случаях при использовании Wordpress 2.3 с включенными ЧПУ. Причем Google без проблем индексировал сайт, но для русских поисковиков нужно было как то исправлять ситуацию.
Решения проблемы в Интернете я не нашел, так что пришлось разбираться самому. После нескольких неудачных попыток поиграть с редиректами в Wordpress и содержимым файлов robots.txt и .htaccess, я решил действовать «в лоб».
1) Полностью отключил 301 редиректы в Wordpress.
Для этого в файле wordpress/wp-includes/canonical.php я закомеентировал строчку
wp_redirect($redirect_url, 301);
2) Изменил файл .htaccess:
DirectoryIndex index.php index.html
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.delphiblog\.ru
RewriteRule ^(.*)$ http://delphiblog.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>Выделенные строчки отвечают за перенаправление с адресов вида http://www.delphiblog.ru/что-то-там на http://delphiblog.ru/что-то-там.
3) Изменил файл robots.txt:
User-agent: *
Disallow: /wp-includes
Disallow: /wp-admin
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-login.phpСтраница: 1 2
Рубрики: Wordpress |
22.03.2008 в 14:22
Спасибо за методю.
Искал плагин карты сайта для блога, случайно напаролся на этот пост, и ужаснулся!
Все мои блоги на ВП выдавали 301 редирект… поправил с помощью вашего метода.
Кстати весьма странно что не у всех этп проблема…
Вопрос а почему это не самый лучший метод ? Какие проблемы, могут возникнуть.
Жду развития событий и самого лучшего метода. Ещё раз спасибо.
22.03.2008 в 21:09
Я рад, что этот пост помог. Насчет проблем метода: например, при изменении ссылки на пост при переходе на старую ссылку не будет редиректа на новую, еще в некоторых случаях не будет редиректа. Но найдено лучшее решение:в файле functions.php добавить строчку
remove_action(’template_redirect’, ‘redirect_canonical’);
23.03.2008 в 11:34
А можно по подробней, куда добавить и что сделать со старыми изменениями ?
спасибо 
23.03.2008 в 12:08
Можно) В админке открыть редактор тем, выбрать файл functions.php и первой строчкой добавить remove_action(’template_redirect’, ‘redirect_canonical’);
Сохранить. Со старыми изменениями: в файле canonical.php раскомментировать строку wp_redirect($redirect_url, 301);
Я у себя сделал так, вроде возвращается ответ 200
04.04.2008 в 21:09
А куда именно? =)
Кусок кода:
<?php if ( function_exists(’register_sidebar’) ) {register_sidebar();register_sidebar();}
// Custom Header Image Support
define(’HEADER_TEXTCOLOR’, ”);
define(’HEADER_IMAGE’, ‘%s/img/header.jpg’); // %s is theme dir uri
define(’HEADER_IMAGE_WIDTH’, 900);
define(’HEADER_IMAGE_HEIGHT’, 150);
define( ‘NO_HEADER_TEXT’, true );
04.04.2008 в 22:16
например, первой строчкой (после <?php):
<?php
remove_action(’template_redirect’, ‘redirect_canonical’);
if ( function_exists(’register_sidebar’) ) {register_sidebar();register_sidebar();}
…
05.04.2008 в 08:18
Иван, спасибо! =) Я подозревал, что именно так, но решил удостовериться, ибо чайник. =)
05.04.2008 в 10:18
В таких вещах лучше быть уверенным, а то одна неверная строчка может остановить работу всего сайта)
20.04.2008 в 09:39
Иван, а как вообще убрать 301-й редирект?
У иеня гугл проиндексировал с www а яндекс без, поэтому хочу чтобы нормально работал и не редиректил wordpress
20.04.2008 в 11:14
Чтобы отключить редирект с www, можно в functions.php первой строкой написать
remove_action(’template_redirect’, ‘redirect_canonical’);
30.04.2008 в 05:56
Если делать наоборот основным адрес с WWW, то при изменении строк пункта 2 на:
DirectoryIndex index.php index.html
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^delphiblog\.ru
RewriteRule ^(.*)$ http://www.delphiblog.ru/1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Блог начинает сам себя редиректит ьна индексную страницу бесконечно…
Что не так, не подскажете?
30.04.2008 в 08:08
RewriteCond %{HTTP_HOST} ^domen\.ru$ [NC]
RewriteRule ^(.*)$ http://www.domen.ru/1 [R=301,L]
Попробуйте те 2 строчки заменить на эти, только измените domen.ru на нужный адрес
13.05.2008 в 06:54
Столкнулся с похожей проблемой в прошлом. Не люблю яндекс, гугл лучше!
28.05.2008 в 12:20
Очень хорошее и полезное сообщение. Сам недавно искал в интернете данную тему и все обсуждения связанные с ней. Но только тут нашел хороший и качественный и что немаловажно полезный материал. Спасибо автору блога за предоставленную информацию.
03.06.2008 в 22:23
что касается темы, то мне кажется актуальность будет известна только через некоторое время
05.06.2008 в 00:08
Побольше бы такой infы
24.07.2008 в 15:36
Спасибо! Информация пригодилась.
01.09.2008 в 15:19
Вставлял строчку
remove_action(’template_redirect’, ‘redirect_canonical’);
Но, попрежнему редиректит либо с www, либо на www (смотря как в настройках блога вписать).
Может подскажете как сделать, чтобы и с www и без www не было редиректа.
Спасибо!
Wordpress 2.6
02.09.2008 в 12:22
iRedactor, даже не знаю, у меня на всех сайтах (WP 2.3 - 2.5, 2.6 пока нету) редирект убирается при помощи этой строчки… посмотрите, может в .htaccess прописан редирект
10.09.2008 в 18:59
мдяяяя ….. *много думал*….
автору спасибо за пост !!
16.09.2008 в 15:00
Спасибо за пост. Разобрался, думаю теперь всегда 200 будет! )
16.09.2008 в 20:08
Надо взять на заметку
22.09.2008 в 20:35
Случайно увидел. Не ожидал.
25.09.2008 в 16:12
Да, автору респект и уважуха
в wordpress версии 2.6.2 нету функции remove_action
заремил
//wp_redirect($redirect_url, 301);
//exit();
вроде идет 200 и редиректа нет
27.09.2008 в 21:19
Спасибо большое
а то я уже 3 месяца не в Яндексе - все искал в чем трабла, а посмотреть ответы сервера что-то не подумал
Теперь все гуд…..
Еще раз спасибо.
29.09.2008 в 08:54
>>в wordpress версии 2.6.2 нету функции remove_action
Спасибо за информацию, subnets, не знал, не добрался еще до нового Wordpress’a
29.09.2008 в 08:55
>>Спасибо большое
source, Рад что эта инфа оказалась полезной
04.10.2008 в 14:49
а robots.txt сильно помогает ускорить или облегчить индексацию? т.е. рекомендуете обновить если сайт уже в яндексе?
09.10.2008 в 19:52
мдяяяя ….. *много думал*….
автору спасибо за пост !!
09.10.2008 в 20:39
хм…ну это памойму уже крайность…
14.10.2008 в 04:15
“Мало кто может похвастаться такой смекалкой, как у автора”
15.10.2008 в 20:22
Я извиняюсь может я чего то не дочитал или чего-то не допонял я просто новичок, скажите мне такую ситуацию: уменя был сайт на простых html страничках перешел я на wp, со старых страниц поствил редирект 301 на хостинге, Гугл все индексирует, в яндексе в поиске вместо названия страниц url страниц с нового сайта вообще нет в индексе. Что делать если можно помогите, дайте подробную инструкцию. Спасибо!
15.10.2008 в 20:27
Забыл сказать у меня wp 2.6.2
20.10.2008 в 18:06
У меня такая же трабла, спасибо , сейчас попробую сделать. С меня пиво
02.11.2008 в 04:56
Спасибо очень кстати. Я с хостером 2 дня переписывался, почему у меня сайт дает ответ 301. Действительно проблема WP.
08.11.2008 в 20:04
пока я жив, я буду помнить ваш ресурс
заношу в букмарки….
11.01.2009 в 16:32
[…] (ну нужно мне ) я натолкнулся на пост под названием “Проблема с 301 редиректом и Wordpress или Почему не индексир
14.01.2009 в 03:15
Может кто-то что-то подскажет…
(соответствующая опция “индексировать” включена в вордпрессе)
autosvit.net.ua вообще не индексируется
05.02.2009 в 21:37
В Wordpress 2.7, если я правильно все понял просто надо remove_action(’template_redirect’, ‘redirect_canonical’);
прописывать не в functions.php, а в canonical.php
19.02.2009 в 20:38
[…] Яндексом, я решил, что ожидание слишком затянулось. Предложенное Иваном Ширко решение этой проблемы мне не понравилось - он предлагает, по сути, просто […]
24.02.2009 в 12:48
После смены движка на WordPress 2.7 сайт не индексируется.
В Яндекс.Вебмастер в индексе только: http://****.ru/ без заголовка и описания.
В ошибках растет число ошибок при индексации страниц:
HTTP-статус: Ресурс перемещён навсегда (301)) - 11
/ 28.01.2009 17.02.2009
/articles/a4 17.02.2009 17.02.2009
/articles/a5 17.02.2009 17.02.2009
/articles/a6 17.02.2009 17.02.2009
/articles/a7 17.02.2009 17.02.2009
/pic/g8 17.02.2009 17.02.2009
/pic/g9 17.02.2009 17.02.2009
/service/corporation 17.02.2009 17.02.2009
/service/love 17.02.2009 17.02.2009
/service/reportage 17.02.2009 17.02.2009
/service/wedding 17.02.2009 17.02.2009
В инете нашел материал по похожим проблемам, на данный момент стоит редирект 301 в .htaccess
DirectoryIndex index.php index.html
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.****.ru$ [NC]
RewriteRule ^(.*)$ http://****.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
в robots.txt :
User-agent: *
Disallow: /wp-includes
Disallow: /wp-admin
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-login.php
Host: ****.ru
так же wp-includes/canonical.php закоменчены строчки:
// wp_redirect($redirect_url, 301);
// exit();
так же похожая проблема наблюдается там где в WordPress 2.7 не вносилось никаких изменений.
Огромная просьба помочь в решение проблемы!!!
02.03.2009 в 17:25
[…] в инете, я нашел статью, которая явственно указывает на то, что это косяк […]
31.03.2009 в 12:45
Тоже была подобная трабла. Вылечил этим же. Странно то, что WP одинаковый был на 10 сайтах, а 301 отдавал тока на 1. Я не разбирался.
15.04.2009 в 08:32
Иван, а у вас штаксес сейчас реально как в примере? Просто почему-то не вижу переадресации с www на версию без www
http://www.delphiblog.ru/2008/wordpress-301/
03.05.2009 в 10:48
to alexspb
это после переноса сайта забыл поменять htaccess, теперь вернул старый, спасибо
08.05.2009 в 16:23
яша вообще последнее время жадный стал
27.05.2009 в 20:05
Большое спасибо автору за полезную статью
17.07.2009 в 07:52
Умоляю, подскажите новичку, как узнать ответ сервера при обращении к сайту? У меня такая же проблема с перенаправлением и Яндексом-редиской:)
04.08.2009 в 16:21
При таких действиях перестает работать WPSuperCache, и все свои настройки ЧПУ
28.08.2009 в 10:23
У меня к вам вопрос. На одном моем блоге в яндексе всего 1 страница, а в google 40. С чем это может быть связано? Бана нет, я проверял
05.09.2009 в 05:54
Я полный чайник в этом((( Иван, подскажи, как закоментировать строчку…
Заранее спасибо!
23.09.2009 в 18:47
у меня на сайте не получилось исправить ошибку с помощью remove_action(’template_redirect’, ‘redirect_canonical’);
чем неприятным грозит простое отключение редиректа в вордпрессе по первоначальному рецепту?
27.09.2009 в 21:23
Боже мой, как я замучалась с этой ошибкой, уже всё что могла перечитала и перепробовала, никакого толка. А вот Вы мне так помогли! Всего одна строчка и счастье улыбнулось - 200 OK. Нет слов! Просто низкий поклон! Спасибо!
06.11.2009 в 09:29
То что надо!
От себя хочу еще добавить, что проверить редирект можно по этому адресу
10.12.2009 в 10:05
Большое спасибо за статью! Очень помогли разобраться.