Pisząc aplikację w PHP używamy odbierania danych z adresu metodą GET. Wyszukiwarki internetowe "nie przepadają" za linkami typu http://mojastronka.pl/artykul.php?kat=news&id=1 no i trudniej je zapamiętać. Z pomocą przychodzi nam .htaccess, w którym możemy wprowadzać reguły przepisywania linków. Np. :
Nasz nieładny link:
http://mojastronka.pl/artykul.php?kat=news&id=1&czytaj=wszystko
Możemy zamienić na:
http://mojastronka.pl/artykul/news/1/
lub:
http://mojastronka.plartykul-news-1.html
Nie musimy tworzyć żadnych katalogów ani plików .html, .htaccess "oszuka" nasz skrypt i wprowadzi mu odpowiednie dane. W tym celu tworzymy regułę w pliku .htaccess:
Zajmiemy się przykładem: http://mojastronka.pl/artykul-news-1.html
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mojastronka.pl$ [NC]
RewriteRule ^artykul-([a-z0-9._]+)-([^-]+).html$ artykul.php?kat=$1&id=$2 [L]
W pierwszej linijce aktywujemy silnik MOD_REWRITE, w drugiej zaś podajemy adres naszej strony (z www i bez), a w trzeciej podajemy regułę przepisywania. Schemat jest prosty:
RewriteRule ^adres_jaki_bedzie_wpisany$ adres_jakiego_uzywalismy [L]
Adres jaki będziemy wprowadzać: ^artykul-([a-z0-9._]+)-([^-]+).html$
artykul-[znaki od a do z oraz cyfry i znak podkreślenia "_"]-[cyfry].html
Skrypt przyjmie to jako:
http://mojastronka.pl/artykul.php?kat=kategoria&id=numer_w_bazie
Następna reguła będzie przekierowywać adres:
http://mojastronka.pl/artykul/news/1/
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mojastronka.pl$ [NC]
RewriteRule ^artykul/([a-z0-9._]+)/([^-]+)/$ artykul.php?kat=$1&id=$2 [L]
Czyli: RewriteRule ^artykul/[litery_cyfry_oraz_znak_podkreslenia]/[cyfry]/$
A więc, jeśli teraz wpiszemy w przeglądarce:
http://mojastronka.pl/artykul/news/1/
będzie to równoznaczne z wpisaniem:
http://mojastronka.pl/artykul.php?kat=news&id=1
UWAGA!!!
Podczas użycia powyższego przykładu możecie napotkać problemy, gdyż serwer będzie myślał, że znajdujecie się w katalogu /artykul/news/1/ co może powodować problemy z obrazkami, linkami, plikami .css oraz .js. Dlaczego? Otóż często podajecie url do załóżmy obrazka: obrazki/logo.jpg. Gdy będziecie pod adresem http://mojastronka.pl/artykul/news/1/ przeglądarka będzie próbowała wyświetlić obrazek z katalogu /artykul/news/1/obrazki/logo.jpg, który NIE ISTNIEJE! Tak więc, aby temu zapobiec, w kodzie należy zmienić scieżkę z "obrazki/logo.jpg" na "/obrazki/logo.jpg" (ścieżkę bezwzględną), czyli aby szukał folderu obrazki w katalogu głównym "/".