Здравствуйте, друзья. Продолжаем тему чистки сайта от лишних страниц. В предыдущей статье, я говорил как избавится от лавинообразного создания дублей страниц с расширениями WP json, oembed, 1.0 и других мусорных ссылок и страниц. Как их удалить при помощи кода и установкой специальных плагинов.
Сегодня, поговорим о лишних ссылках, которые создаются в header с помощью функции wp_head самим WordPress и установленными плагинами. По этим ссылкам переходят роботы поисковых систем и различные боты, что создает значительную дополнительную нагрузку на сайт и дубли страниц. Давайте разберем подробнее:
Лишние ссылки на сайте
1.Функция rsd_link.
Если вы используете для написания и публикации своих статей блог-клиенты (редакторы Windows Live Writer, BlogDesk, BlogJet и другие) эта функция служит для управления и соединения с вашим ресурсом. Если вы пользуетесь предустановленным редактором CMS WordPress или используете Microsoft Word, то можете смело убирать строчку из кода создаваемую этой функцией. Как выполнить удаление я покажу в конце статьи, наберитесь терпения.
2.Функция wlwmanifest_link.
Данная функция служит для подключения к сайту все того же редактора контента Windows Live. Если вы не используете данный редактор, можно удалять ссылку.
3. Функция wp_shortlink_wp_head.
Я не знаю для чего создается короткая ссылка и ее дубли, можно удалять не думая.
4. Функция adjacent_posts_rel_link_wp_head.
Данная функция формирует ссылки на предыдущую и следующую страницу. Зачем эти ссылки выведены в header, не понятно. Есть карта сайта для посетителей, XML карта для роботов, навигация по сайту реализованная в шаблоне или при помощи плагинов. Удаляем за ненадобностью.
5. Функция wp_generator.
Данная функция, генерирует какой движок и какая его версия установлены на сайте. Ну прямо ковровая дорожка для хакера! Зная движок и его версию, нехорошим людям будет проще взломать ваш ресурс. Однозначно удаляем.
6. feed_links_extra.
Это ссылка на RSS поток встроенный в вордпрес, фид с комментариями. Многие блогеры используют для настройки своих RSS лент сервис feedburner. Тоже можно удалить данную ссылку.
Чистка сайта от лишних ссылок.
Для удаления мусора, вам понадобится вставить специальный код с функцией remove_action, которая удаляет действия, и чистит хуки. Копируете данный код, и вставляете его в файл functions.php в конце кода, перед знаком ?>.
/*-----------------------------------------------------------------------------------*/ /* Убираем мусор: feed, shortlink /*-----------------------------------------------------------------------------------*/ function mw_clear_wp_head() { add_filter('xmlrpc_enabled', '__return_false'); remove_action( 'wp_head', 'feed_links', 2 ); // Удаляет ссылки RSS-лент записи и комментариев remove_action( 'wp_head', 'feed_links_extra', 3 ); // Удаляет ссылки RSS-лент категорий и архивов remove_action( 'wp_head', 'rsd_link' ); // Удаляет RSD ссылку для удаленной публикации remove_action( 'wp_head', 'wlwmanifest_link' ); // Удаляет ссылку Windows для Live Writer remove_action( 'wp_head', 'wp_generator' ); // Удаляет версию WordPress remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0); // Удаляет короткую ссылку remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); // Удаляет ссылки на предыдущую и следующую статьи } add_action( 'wp_head', 'mw_clear_wp_head', 1 );
Не забудьте сохранить изменения. Вот так просто мы избавились от лишнего шлама на сайте. Всем удачи!
Да, Ольга, можно избавится от дублей страниц правильно настроив редирект в htaccess.
Соответственно надо открыть запрет на индексацию в robots.txt
У меня это выглядит следующим образом:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^replytocom= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteRule (.+)/feed /$1 [R=301,L]
RewriteRule (.+)/comment-page /$1 [R=301,L]
RewriteRule (.+)/trackback /$1 [R=301,L]
RewriteRule (.+)/comments /$1 [R=301,L]
RewriteRule (.+)/attachment /$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^attachment_id= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Файл robots.txt примерно должен выглядеть следующим образом (настраивается индивидуально для каждого сайта).
User-agent: *
Disallow: /wp-includes
Disallow: /feed
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Host: сайт.com
Sitemap: http ://сайт/sitemap.xml
User-agent: Googlebot-Image
Allow: /wp-content/uploads/
User-agent: YandexImages
Allow: /wp-content/uploads/
Как вы поняли при добавлении строки RewriteRule (.+)/feed /$1 [R=301,L] необходимо открыть индексацию в robots.txt Disallow: /feed
Удачи вам!
Здравствуйте!
А если у меня настроен редирект в htaccess:
RewriteRule (.+)/feed /$1 [R=301,L]
Я могу еще и дополнительно вставить код, который убирает так же fedd в файле functions? Или это будет ошибкой?
Пожалуйста, Юрий. Применяйте все получится.
Спасибо за такую полезную статью. Я только пробую заниматься созданием сайта и эта проблема у меня была. Раньше я обращался к другу, чтобы исправить положение. Теперь постараюсь самостоятельно разбираться с возникшими дублями.
Андрей, при установке плагина, больше ничего делать не надо. Все дубли будут убраны автоматически.
Довольно полезная функция, я с кодом не сильно дружу, спасибо что сделали наглядный пример! Хотел спросить, в предыдущей статье вы писали о расширении WP json, oembed, если я его установил, то правку в файле functions.php все ровно необходимо делать или достаточно действия плагина! Я так понял что плагин будет бороться с появлением дублей страниц?