Skocz do zawartości

Robots.txt. Co to jest, jak go używać i do czego służy


SeNioR
 Udostępnij

Rekomendowane odpowiedzi

  • Założyciel

Robots.txt to plik tekstowy, umieszczany w głównym katalogu (public_html) naszego serwisu. W pliku robots.txt w większości przypadków umieszcza się link do mapy strony i informuje wszystkie lub wybrane boty takie jak np. Google, Bing czy Yahoo o tym że mogą wykonać określone działanie na stronie. 

Warto wspomnieć na początku że zablokowanie dostępu robotom nie usuwanie (wyindeksuje) naszej strony z indeksu wyszukiwarki.  Aby skutecznie wyindeksować strony należy zastosować meta tag robots który umieszczamy w sekcji <head>:

<meta name="robots" content="noindex">

Aby przetestować działanie pliku robots.txt na dowolnych adresach URL najlepiej skorzystać z narzędzia Robots Testing Tool w Google Search Console.

WPISY:

User-agent: (Tutaj podajemy dokładną nazwę bota której ma dotyczyć dyrektywa)

W przypadku wstawienia znaku * (gwiazdki) dyrektywa będzie dotyczyła wszystkich botów.

Sitemap: (Podajemy pełny adres do naszej mapy strony)

Informujemy robotów że tutaj znajduje się nasza mapa strony. Ułatwi im to szybsze zaindeksowanie stron.

Crawl-delay: (dodajemy czas w sekundach np. 2)
W ten sposób nakazujemy robotom by indeksowały strony nie szybciej niż co 2 sekundy. Pozwala to zaoszczędzić transfer i uniknąć przeciążenia serwera. 

KOMENTARZE:

Aby dodać komentarz, tak aby plik był przejrzysty i wiadomo było co do czego służy dodajemy symbol kratki # 

#przykładowy komentarz

DYREKTYWY:

  • Disallow: (zakazujemy indeksowania)
  • Allow: (pozwalamy na indeksowanie)

Dokładne nazwy najpopularniejszych botów:

  • Googlebot
  • Bingbot
  • Slurp
  • DuckDuckBot
  • Baiduspider
  • YandexBot

Domyślny plik robots.txt powinien wyglądać tak:

User-agent: *
Disallow:

Informujemy w ten sposób wszystkie boty że mogą indeksować całą stronę (wszystkie katalogi, pliki, podstrony, rozszerzenia plików, itd).

Aby zabronić indeksowania plik robots.txt wyglądać będzie następująco:

User-agent: *
Disallow: /

Aby zabronić wyszukiwarce Google na indeksowanie określonego katalogu np. katalog z zdjęciami plik robots.txt powinien wyglądać tak:

User-agent: Googlebot
Disallow: /zdjecia/

Aby zabronić wyszukiwarce Yahoo na indeksowanie plików z określonym rozszerzeniem np. .jpg plik powinien wyglądać tak:

User-agent: Slurp
Disallow: /*.jpg$

Aby zezwolić wyszukiwarce Bing na indeksowanie tylko określonych katalogów i wybranego pojedynczego pliku, robots.txt powinien wyglądać tak:

User-agent: BingBot
Allow: /katalog1/
Allow: /katalog2/
Allow: /plik.html

Aby poinformować i odesłać botów do naszej mapy strony dodajemy do pliku robots.txt następujący wpis (oczywiście adres zmieniamy na swój):

Sitemap: http://www.twojanazwa.pl/sitemap.php

Przykładowy plik robots.txt przystosowany pod skrypt Invision Community Suite 4:

# the protocol of the sitemap.
Sitemap: https://www.pecetowicz.pl/sitemap.php

# Wait 2 second between successive requests. See ONBOARD-2698 for details.
crawl-delay: 2

# Every bot
User-agent: *
Disallow: /*utm_source$
Disallow: /api/
Disallow: /cgi-bin/
Disallow: /plugins/
Odnośnik do komentarza
Udostępnij na innych stronach

@SeNioR 

# the protocol of the sitemap.
Sitemap: https://www.moja_strona/sitemap.php

# Wait 2 second between successive requests. See ONBOARD-2698 for details.
crawl-delay: 2

# Every bot
User-agent: *

Czy jeżeli chcę aby wszystko było indeksowane przez wszystkie boty to ustawienie w/w jest prawidłowe?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Założyciel

Do wpisu musisz jeszcze dodać dyrektywę.

# Every bot
User-agent: *

na

# Every bot
User-agent: *
Disallow:

Może to być trochę mylące bo Disallow oznacza zakaz indeksowania ale nie określiliśmy tutaj ścieżki czyli znaku ukośnika / i zostawiliśmy tutaj puste pole więc nie ma żadnych zasad i limitów a co za tym idzie wszystko będzie indeksowane. 

Powołując się na tą specyfikację

Cytuj

Any empty value, indicates that all URLs can be retrieved.

Co można przetłumaczyć jako "Każda pusta wartość, wskazuje że każde adresy URL będzie można pobrać".

Tak więc zastosowanie

User-agent: *
Disallow:

to to samo co 

User-agent: *
Allow: /

Jednak przekonanie jest takie że roboty lepiej rozumieją pustą dyrektywę Disallow: więc ją się też stosuje.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Z tym Allow / Disallow - stosować się powinno tylko Disallow dla katalogów / plików, bo roboty działają w myśl zasady: "co nie jest zabronione jest dozwolone".

Tutaj więcej info na ten temat: Create a robots.txt file - Search Console Help

Edytowane przez BlackIce
źródło
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert
7 godzin temu, SeNioR napisał:

Disallow: /*utm_source$

możesz wyjaśnić co się za tym kryje?

może niektórym przyda się moje robots do ips, ustawione na restrykcje

# Disallow directory
Disallow: /api/
Disallow: /admin/
Disallow: /applications/
Disallow: /cgi-bin/
Disallow: /datastore/
Disallow: /plugins/
Disallow: /system/
Disallow: /themes/
Disallow: /modcp/
Disallow: /statuses/
Disallow: /discover/
Disallow: /activity/
Disallow: /chat/
Disallow: /staff/
Disallow: /guidelines/
Disallow: /profile/
Disallow: /login/
Disallow: /register/
Disallow: /online/
Disallow: /pastleaders/
Disallow: /leaderboard/
Disallow: /lostpassword/
Disallow: /files/submit/
Disallow: /user/

# Querystring
Disallow: /index.php?*
Disallow: /?tab=*
Disallow: /?app=*
Disallow: /*sortby=*
Disallow: /?ref=*
Disallow: /?do=*
Disallow: /?view=*
Disallow: /?in=*
Disallow: /?time=*

#Disallow files
Disallow: /403error.php
Disallow: /404error.php
Disallow: /500error.php
Disallow: /Credits.txt
Disallow: /error.php
Disallow: /upgrading.html

w tym może was zainteresować #Querystring

czyli blokowanie url tworzących śmieciowe podstrony, które obniżają ranking forum, wykryte za pomocą Search Console

Odnośnik do komentarza
Udostępnij na innych stronach

  • Założyciel

@Lukazuki ❤ 

W większości sytuacji plik robots.txt jest zbędny w IPS 4. Wiele rzeczy można wyłączyć dla gości przez co parametr do= staje się niewidoczny.. Nie radzę kopiować cudzych plików robots.txt. Aby uniknąć ostrzeżeń o braku tego pliku można dodać standardową regułę. Ale jak ktoś nie ma pojęcia jak posługiwać się tym plikiem to nie powinien nic dodawać od siebie. Bo trzeba wiedzieć jak skrypt IPS zareaguje, co zostanie zaindeksowane a co nie i co jest już blokowane automatycznie w skrypcie.

Należy też pamiętać o tym że nie można blokować np. katalogu w robots i jednocześnie używać meta tagu robots bo robots.txt nie będzie pozwalał botowi na dostęp więc bot nie będzie w stanie zobaczyć meta tagu robots więc nie wyindeksuje strony. 

6 godzin temu, Lukazuki ❤ napisał:

Disallow: /*utm_source$

Parametr utm dotyczy kampanii w Google Analytics. Jest on zbędny, ja go dodałem jako przykład.

Można stworzyć sobie taką kampanię Kampanie niestandardowe - Analytics - Pomoc i monitorować ruch np. z przekierowania jednej domeny na drugą. W moim przypadku Google zaczęło indeksować nową domenę z tym właśnie parametrem na końcu bo poprzednia domena miała wiele podstron nie należących do IPS a przekierowanie było na zasadzie 301 gdzie roboty informowane są że stara zawartość z domeny A została przeniesiona trwale pod nową domenę B.

Cytuj

w tym może was zainteresować #Querystring

czyli blokowanie url tworzących śmieciowe podstrony, które obniżają ranking forum, wykryte za pomocą Search Console

Na twoim miejscu usunąłbym wszystkie te parametry czy ciągi znaków jak zwał tak zwał.. W IPS 4.3 jest to rozwiązane za pomocą meta tagów noindex. Sam miałem podobne przekonanie i też blokowałem to przez kilka miesięcy bo Google indeksowało niechciane podstrony ale trzeba zaznaczyć że robots.txt blokuje jedynie dostęp a strona i tak zostanie zaindeksowana. Wynik był raczej odwrotny do zamierzonego. 

Te podstrony wcale nie obniżają rankingu a nawet pomagają. Gdyby tak było to IPS dodało by domyślnie plik robots.txt w paczce. 

Przykładowo blokujesz /index.php?* a jeżeli ktoś nie będzie miał włączonych przyjaznych linków to w ten sposób zablokuje dostęp do wszystkich podstron! Więc to nie jest dobra praktyka pod SEO.

W IPS 4.3 parametry takie jak

  • do=*
  • app=*
  • do=follow*
  • do=embed*
  • do=add
  • do=email

są usuwane z indeksu za pomocą meta tagu robots. 

Natomiast parametry takie jak poniżej przekierowują do prawidłowego odnośnika więc nie ma sensu ich blokować w robots.txt czy próbować je wyindeksować

  • do=getNewComment
  • do=getLastComment
  • do=findComment*
  • do=reportComment*
  • sortby=*
Cytuj

# Disallow directory

#Disallow files

Nie ma sensu blokowania katalogów bo i tak one nie są indeksowane. Roboty nie będą miały do nich dostępu i będą otrzymywały kod odpowiedzi 403 czyli brak dostępu. Dzięki plikowi robots.txt pokazujesz tylko jakie foldery posiadasz i przez to potencjalny haker będzie miał ułatwione zadanie bo będzie miał pełną listę twoich katalogów.. a zwłaszcza katalog admin gdzie dla bezpieczeństwa zmienia się jego nazwę a później ktoś doda go i tak w robots.txt  Katalog ten nie ma żadnego odnośnika więc Google na niego nie trafi i go nie zaindeksuje a nawet jakby tak było to tak jak wspomniałem wyżej otrzyma odpowiedź 403.

Ty tutaj blokujesz dostęp do rejestracji i logowania ale po co? W czym to przeszkadza? Na forach wielotematycznych blokowanie takich katalogów to absurd bo powinny one znajdować się w indeksie aby ułatwić rejestrację czy logowanie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

mała korekta, portfolio/forum na ips* zanim dodałem to sprawdziłem czy ma sens w moim przypadku

4 godziny temu, SeNioR napisał:

są usuwane z indeksu za pomocą meta tagu robots

w wielu miejscach ten meta tag jest pomijany, i gdy nie wykluczyłem tego w robots to widniały w indeksie google podstrony z ?do ?sortby ?view etc, dodam że używam wcześniejszej wersji ips czyli w najnowszej to chyba leci z automatu jak piszesz

4 godziny temu, SeNioR napisał:

Nie ma sensu blokowania katalogów bo i tak one nie są indeksowane.

tu chodzi o blokowanie tego co w katalogu jest, wiec jak dodam /katalog/ to wszystkie domena.com/katalog/cos...etc nie będą uwzględniane

czyli bardziej polecasz ręczne dodawanie meta tagu robots z noindex?

dla tego napisałem restrykcyjne

sprawdzam pewną rzecz, czy jeśli wykluczę wszystkie podstrony na których nie ma wartościowej treści to czy wskaźnik DA/PA zacznie wzrastać

Odnośnik do komentarza
Udostępnij na innych stronach

A co do ustawień htaccess, jakie najlepsze używać? 

Obecnie używam 

## IPS Suite Forum SEO
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico)(\?|$) - [L,NC,R=404]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

## End IPS Suite Forum SEO

## Begin - Expires caching
<IfModule mod_expires.c>

## This rule will create an ETag for files based only on the modification timestamp and their size. 
## Note: It may cause problems on your server and you may need to remove it
FileETag MTime Size

SetOutputFilter DEFLATE
Header set Expires "max-age=29030400, public"
Header unset ETag
FileETag None

# Enable expiration control
ExpiresActive On

# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"

# CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"

# Image files expiration: 1 month after request
ExpiresByType image/bmp "now plus 1 month" 
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpg "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"

# Other optimizations
ExpiresByType application/x-gzip "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"

</IfModule>
## End - Expires caching

AddType application/x-httpd-php70 .php
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map)(\?|$) /404error.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Odnośnik do komentarza
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×