Konstrukcja adresów URL

Parametry w adresach URL

Wraz z rozwojem i popularyzacją technologii tworzenia stron internetowych, jaką jest PHP należy unikać tworzenia adresów zawierających ciągi parametrów, które powodują generowanie dynamicznej treści w zawartości podstron. Duża ilość skryptów – na przykład for czy blogów, wykorzystuje takie parametry by generować odpowiedni treści wewnątrz serwisu. Przykład adresu z parametrami:

http://adres.pl/?kategoria=programowanie&wpis=16

Problem jaki rodzą takie adresy, jest fakt, że można poszczególne parametry przestawić. Takie same treści otrzymamy z adresu, w którym parametry ułożone by były tak:

?id=16&kategoria=programowanie

Jak widać powyżej, przestawiona została kolejność parametrów ID oraz kategoria. Takie generowanie treści utrudnia robotom indeksowanie strony, gdyż te same treści są dostępne z kilku lokalizacji URL, dlatego należy zrezygnować w ramach możliwości z takiego adresowania. Aby uniknąć takich sytuacji można wykorzystać w ramach możliwości dobrodziejstwa mod_rewrite.

Budując, dosyć dawno katalog stron internetowych również chciałem uniknąć problemu parametrów w adresie. Skorzystałem z prostej metody, która jednym zamachem pomogła mi w ukryciu parametrów zarówno kategorii, subkategorii i konkretnych podstron. Reguły dotyczące mod_rewrite należy zapisywać w dokumencie .htaccess na serwerze naszej strony.

RewriteEngine On
RewriteRule ^([a-z0-9-_]+),([a-z0-9-_]+).html$ $1.php?id=$2 [L,NC,NS]

Powyższa regułka przepisywania składa się z następujących elementów:

  • RewriteEngine On – oznacza, włączenie opcji przepisywania adresów.
  • RewriteRule - to początek nowej reguły przepisywania.
    • ^ - rozpoczyna wyrażenie regularne.
    • ([a-z0-9-_]+),([a-z0-9-_]+).html – cała zawartość reguły, w której występują dwa ciągu ([a-z0-9-_]+) – czyli mogą zawierać wszystkie litery i cyfry. Pomiędzy dwoma ciągami jest , - każdy znak specjalny należy poprzecie Więc ten zapis mówi, że po środku jest przecinek. Na końcu dopisany został .html – by adres dokumentu sugerował zwykły dokument html.
    • $ oznacza koniec wyrażenia regularnego, do którego będą porównywane wpisywane adresy.
  • $1.php?id=$2 – To część na jaką zostaną przepisane adresy, wyciągnięte z prawidłowych adresów. Jak widać, są to adresy z parametrami. Nie będą one jednak rozpoznawane przez roboty wyszukiwarek, które otrzymają pełne adresy. Pierwsze ($1) odwołuje się do pierwszego ciągu znaków ([a-z0-9-_]+), a $2 do kolejnego licząc od prawej.

Dzięki takiemu prostemu zapisowi nie było konieczności korzystania z adresów takich: http://adres.pl/katalog.php?id=15

Gdyż ten adresy był wczytywany, przy wpisaniu takiego pełnego URL: http://adres.pl/katalog,15.html. W dużym uproszczeniu i nie jest tak dosłownie, skrypt zamienia przecinek występujący w przyjaznym adresie internetowym, na taki zapis .php?id=, dzięki czemu wczytywane są odpowiednie treści jak przy wykorzystaniu adresów z parametrami.

Powyższa reguła może nie pasować do Twojego serwisu, gdyż dla każdej struktury regułki mod_rewrite mogą wyglądać inaczej.

Oczywiście ModRewrite to spora dziedzina związana z technologią Apache, więcej o mod rewrite możesz przeczytać w artykułach:


Poleć artykuł znajomym
  • Blip.pl
  • Flaker
  • Opis GG
  • Wykop
  • Spinacz
  • Pinger
  • Link na Twoją stronę:

Śledź nowości w serwisie