Kawałek Kodu

Programistyczne porady na luzie

Czy to ty czy to ja? Czyli duplicate content.

Zjawisko "duplicate content" zachodzi wtedy, kiedy treść Twojego serwisu w całości lub jego części, jest osiągalna pod tymi samymi adresami URL jednocześnie. Dla wyszukiwarek domena mojadomena.pl oraz www.mojadomena.pl to dwa niezależne adresy. Jeśli serwis oferuje tą samą treść pod adresem "z www" jak i "bez www" (lub odwrotnie), lub też zawartość pod adresem /podstrona/ jest identyczna jak pod adresem /podstrona/?sort=asc, to mamy do czynienia własnie z tym okropnym zjawiskiem. Jako przykład tej drugiej sytuacji może posłużyć podstrona z prezentacją produktów, na której mamy możliwość sortowania listy według zadanych parametrów. Parametry przesyłamy w postaci query string (jako zmienne GET). Pomimo, że wizualnie lista się zmienia, to produkty wciąż widnieją te same, a skoro zawartość jest taka sama, to robot indeksujący odbiera to właśnie jako tytułowe zjawisko. Różnica w URL może zachodzić nie tylko na poziomie query string, ale już w path (to ten fragment zaczynający się po nazwie domeny).

Jest to efekt niepożądany ze względu na obniżenie wartości strony w indeksie Google. Metody, które przestawiam tyczą się tylko adresów URL. Nie mają natomiast zastosowania w przypadku kiedy Twój brat lub siostra bliźniak podkrada Ci gumy do żucia - tu lepiej zastosować przekierowanie problemu na rozmowę w cztery oczy (życzę Ci w tej sytuacji osiągnięcia statusu 301).

Czytaj dalej

Palcem po mapach, czyli sitemap dla strony wielojęzykowej.

Jeśli Twój serwis jest wielojęzykowy, to pewnie użyłeś jednego ze sposóbów na przekazywanie wersji językowej w adresie URL:

  1. Zmienna językowa w query string, np.: http://mojadomena.pl/podstrona?lang=pl
  2. Zmienna językowa jako podkatalog, np: http://mojadomena.pl/en/podstrona/
  3. Zmienna językowa jako subdomena, np: http://en.mojadomena.pl
  4. Zmienna językowa przypisana do domeny (odrębna dla każdej domeny), np: http://mojadomena.pl, http://mojadomena.co.uk

O ile w pierwszym i drugim przypadku budowa mapy jest oczywista, bowiem mapa zawiera wszystkie URL niezależnie od języka, tak w przypadku subdomeny lub domeny wyłącznie dla jednego języka, mapa będzie zawierać URL tylko z tej wersji językowej. A skoro serwis fizycznie zajmuje to samo miejsce na serwerze, tak więc i mapa serwisu dla każdej wersji jezykowej będzie w tym samym miejscu.
Ale przecież zgodnie z sugestią Google plik mapy ma mieć ustaloną nazwę, np. sitemap.xml (dla mapy w formcie XML) lub sitemap.txt (dla mapy w postaci pliku tekstowego). Na pewno nie mogą to być pliki o nazwach sitemap_pl.xml dla wersji polskiej i sitemap_en.xml dla wersji angielskiej.

Czytaj dalej

Jak zgubić ogon, czyli query string i .htaccess.

Kluczysz, miotasz się jak szatan, uciekasz przez wszystkie podstrony serwisu, wracasz, a adres URL z którym biegniesz, nadal ciągnie za sobą ogon. Ogon w postaci query string.

Jak się go pozbyć przy przepisywaniu lub przekierowywaniu adresów URL?

Są dwa sposoby:

  1. Dodajemy znak zapytania na końcu wyrażenia regularnego reguły przepisywania/przekierowania.
  2. Dodajemy flagę [QSD] (query string discard). Flaga jest dostępna w Apache od wersji 2.4.
Czytaj dalej