Обичам всякакви подобрения и оптимизации в моя WordPress блог. Проблем е само, че рядко намирам свободно време за блога си напоследък – и все пак има неща, които могат да отнемат по-малко от пет минути свободно време, и при това имат осезаем положителен ефект.

Пример за това е, как можем да предотвратим индексирането на RSS feed-овете* в WordPress от Google и други търсачки.

Следващите няколко реда и 5 минути време ще са посветени на този проблем (и неговото разрешаване). И така…

Откъде да започнем?

Спомням си, че веднъж проверявах в Google кои от страниците на optimiced.com са индексирани (беше някъде в началото, когато блогът ми беше още съвсем млад:-).

Учудих се на това, че освен отделните публикации в блога, открих и много RSS feed-ове (страници с RSS емисии), които също бяха индексирани.

Защо е необходимо Google да не индексира RSS?

Първо, индексираното съдържание се дублира – последните 10 публикации или коментарите към тях, достъпни през RSS, могат да бъдат прочетени и на самия блог. Второ, RSS е предназначен за RSS четци (RSS readers), не и за четене в браузър (към текста и картинките няма приложено форматиране). Последно, кой би искал след търсене в мрежата да попадне на неформатирана RSS страница с коментари, примерно, вместо на самия блог пост, за който се отнасят коментарите? А на мен това ми се е случвало…

(Пример: Този линк може да използвате, за да се абонирате за RSS емисията на моя блог, или просто да видите последните 10 блог поста от optimiced в RSS формат.)

Как можем да предотвратим това? Търсих в интернет доста време, докато накрая попаднах на форума на WordPress, където решението беше намерено, а и самият thread, озаглавен “Prevent indexing of feed pages” беше маркиран като ‘resolved’.

Ето го и начина – за да “забраним” на Google и другите търсачки да претърсват RSS feeds, най-лесният начин е, като използваме трика с robots.txt.

Какво е robots.txt?

robots.txt graphicКакто подсказва името му, robots.txt** е файл в обикновен текстов формат (.TXT), предназначен за четене от роботи:-)

Но не всички роботи, естествено (например, Roomba’та не се брои), а само търсещите машини, като тези на Google, Live Search (доскоро MSN Search), Yahoo!, Alta Vista и всички останали search bots (съкратено от search robots).

За целта се прави нов празен файл и се записва като обикновен текстов файл с име robots и разширение .txt (файлът трябва да се намира в главната директория на сайта/блога – примерно, за optimiced това е https://www.optimiced.com/robots.txt).

След като сте създали текстовия файл, необходимо е да copy-paste’нете в него следните два реда:

User-Agent: *
Disallow: */feed/

Първият ред със звездичката означава, че следващият ред се отнася за всички търсещи машини; а вторият: Disallow: */feed/, означава, че всички URLs, завършващи с /feed/, не трябва да бъдат индексирани (претърсвани).

Тъй като в моя случай аз използвам в WordPress постоянни линкове (permalinks, или permanent links) от типа Date & Name based:
https://www.optimiced.com/bg/%year%/%monthnum%/%day%/%postname%/
…то RSS feed-овете на блога са от типа:

https://www.optimiced.com/bg/feed/
https://www.optimiced.com/bg/comments/feed/
https://www.optimiced.com/bg/име-на-категория/feed/
https://www.optimiced.com/bg/2007/09/16/заглавие-на-пост/feed/

(като последният е примерен RSS feed за коментарите на някакъв отделен пост).

Ако вашият блог използва различна структура на URL-тата – примерно, също толкова популярната “съкратена” версия (https://www.optimiced.com/bg/?p=1234), RSS feed-овете за блога ще са в този URL формат:

https://www.optimiced.com/bg/?feed=rss2
https://www.optimiced.com/bg/?feed=comments-rss2
https://www.optimiced.com/bg/?feed=rss2&cat=123
https://www.optimiced.com/bg/?feed=rss2&p=1234
.

В този случай, предполагам, ще трябва да промените правилото за неиндексиране в robots.txt файла на:

User-Agent: *
Disallow: *?feed*

(Забележка: не съм тествал този вариант, ако някой има опит, ще се радвам, ако го сподели в коментар!:-)

След като направите необходимите промени и поставите robots.txt на сървъра, ще е необходимо да изчакате няколко дни, за да видите очаквания ефект.

Това е:)

Методът е изключително прост и работи. Тъй като ползвам и Google Webmaster Tools, там мога да проверя всички индексирани URL-та на optimiced.com. Малко след като добавих двата реда в robots.txt, в списъка “URLs restricted by robots.txt” попаднаха всички мои RSS-и, точно както очаквах:) Предполагам, и останалите търсачки се подчиняват на същите правила.

Други приложения на robots.txt

Естествено, приложението на robots.txt не се ограничава до спирането на индексирането на RSS feeds — може да забраните, например, индексирането на определена категория в блога, и в този случай за повечето търсачки тази категория (или категории) ще станат “невидими”. Може да “заключите” и други части от вашия сайт (не е задължително да е блог), като просто укажете съответната директория, която не искате да се претърсва.

Robots.txt намира и още много полезни приложения, но в случая исках да пиша само за това, как може да направите вашия WordPress блог малко по-оптимизиран:)

Последно, докато правих моето малко проучване по въпроса, се сетих, че същият ефект може да бъде постигнат и по друг начин – достатъчно е да добавите rel="nofollow" към RSS линковете. Но това ще означава да редактирате кода на WordPress темата, която използвате, и то на повече от едно място.

Така че, определено, robots.txt начинът е много по-лесен:)

____________
Notes:
(*) RSS feed (Really Simple Syndication feed) – в превод на български съм го срещал и като “RSS хранилка”, но не съм съгласен с него, тъй като feed на английски не само значи “храня”, но и “изпращам (новини), подавам/захранвам (с информация)” (за разлика от превода на термина “RSS Reader” – “RSS четец”, с който съм съгласен). RSS поток (“поток на новини”), или RSS емисия би звучало много по-добре и логично. Все пак, за да не ми се налага да избирам, какъв термин да употребя, оставих RSS feed като непреведен термин:)
(**) Повече за robots.txt може да научите в официалния Robots.txt FAQ и в Wikipedia.
(***) Повече за приложението на звездичката (*, или wildcard) за robots.txt, Googlebot и други търсещи машини може да научите от самия google;-)

8 thoughts on “Как да предотвратим индексирането от Google (и други търсачки) на RSS feed-овете в WordPress

  1. Не съм сигурен дали е нужно да се пише нещо в robots.txt. Забелязвам, че гугъл се справя много добре с индексирането на блогове напоследък. Броени минути, след като публикувам тема, тя вече е не само сърчабъл, но и на първа позиция в търсенето ми, ако я препиша дословно и има достатъчно уникално име…

  2. @dzver:

    Преди няколко месеца бях удивен, че освен самите блог-постове, намерих в Google цял куп RSS емисии, за коментарите на всеки един пост поотделно, за категориите в блога и т.н.

    Добавянето на правилото:

    User-Agent: *
    Disallow: */feed/

    …в моя случай, премахва точно тези ненужни записи от базата данни на Google:)

    На търсачките име е все едно, какво индексират – TXT, HTML, RSS… и точно тук на помощ се притичва robots.txt:)))

    Иначе, на самото претърсване на сайта добавянето на правилото да не се претърсват feed-овете няма да даде отражение — да речем, че това е просто minor tweak, за да бъде още по-оптимизиран един блог:)

  3. в такъв случай е по-добре да добавиш и

    Disallow: */rss/

    защото във wp освен във феед потока го има и като
    https://www.optimiced.com/bg/rss и
    https://www.optimiced.com/bg/rdf

    Друг е въпросът дали си заслужава да се прави всичко това. Аз дори напротив – бих заложил на feed-a, но разни хора … разни идеали

  4. @oggin:

    Ами, не,

    Disallow: */rss/

    …не е необходимо, защото тази тема показва само линкове към */feed/ :-)

    Иначе всичко, което се съдържа във RSS feeds, го има и в самия блог, като блог постове, в стандартен HTML/CSS формат. Не е необходимо да се дублира това съдържание. Човек може да се абонира за RSS-ите на даден блог, но надали ще иска да ги чете в браузъра, намерени през Google:)

    Поне така мисля… :)

  5. Мишел, има някои случаи, при търсене на много специфични неща, да откривам нужната информация директно в коментара към някой пост. Последното, за което се сещам, беше един рядко срещан модифициран драйвер за линукс (стария kernel). Иначе е добре да се ползва robots.txt за тази, че и за други цели ;)

  6. @Assenoff:

    Ама коментарите се индексират! :-) Всичко, което е в блог постовете, се индексира, открай докрай.

    Въпросът е, че съдържанието на: тази страница, и нейния RSS еквивалент (за коментарите) се припокрива частично, а това просто не е необходимо.

    Просто трикът с robots.txt не допуска едно и също нещо да се индексира два пъти на две места, като едно от местата са неформатираните RSS feed-ове, това е:)

    За мен това си е хитър и полезен трик:)

  7. Броени минути, след като публикувам тема, тя вече е не само сърчабъл, но и на първа позиция в търсенето ми

    Всъщност няма никаква магия зад цялата работа :)
    Google имат интерфейс, с който да ги уведомите ако има нещо ново.
    WordPress при всяка публикация уведомява Ping-o-Matic.
    Ping-o-Matic уведомява мноого други, включително и Google.

    Така например публикациите се повявават почти вднага в големите feed агрегатори-и (Bloglines, Google Reader), което понякога е неприятно: ако промените нещо малко след публикуване читателите ще го видят много по-късно, защото при редактиране не се ping-ва.

  8. User-Agent: *
    Disallow: */feed/

    Лека забележка: В случая ще бъдат забранени всички URL не замо звършващи, но и съдържащи /feed/. Ако трябва да се забранят само завършващите, трябва да се използва Disallow: */feed/$, само съдържащите: Disallow: */feed/*.

    В Google webmaster tools може да се проверява кой израз какво ще забрани.

    Use robots.txt to prevent crawling of search results pages or other auto-generated pages that don’t add much value for users coming from search engines.
    http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=35769

    Един вид гугъл официално подкрепя ръчното оплевяване на излишно съдържание, което спестява индексирането на бeзполезни страници.

Leave a Reply

Your email address will not be published. Required fields are marked *