Co to jest ten mod_rewrite i dlaczego o nim tyle słyszę?

Co to jest ten mod_rewrite i dlaczego o nim tyle słyszę?
autorem artykułu jest Damian Daszkiewicz

Jednym z popularniejszych tematów na forach internetowych jest mod_rewrite. Często nawet gdy jakiś serwer nie obsługuje tego modułu, uważa się, że nie warto tam hostować swojej strony. Jeśli jednak nie jesteś w temacie, to pewnie nie wiesz, o co w tym wszystkim chodzi i dlaczego jest to taki popularny temat. W tym artykule chciałbym troszkę Tobie przybliżyć to zagadnienie.

Często widuję strony na których jest podstrona o adresie www.costam.pl/ksiazka.php?jaka=1. Taki adres internetowy nie wygląda zbyt przyjźnie. Pewnie dużo ładniej by wyglądał taki adres: www.costam.pl/ksiazka_1.htm. Ten adres nie tylko łatwiej jest zapamiętać zwykłemu internaucie, ale również wyszukiwarki łatwiej go zaindeksują. W pierwszym wypadku jest wywoływany plik index.php z parametrem a w drugim przypadku jest to zwykły plik html. Pierwsze rozwiązanie ma tą zaletę, że plik index.php po otrzymaniu odpowieniego parametru (w tym przypadku 1) może odczytać z bazy danych odpowiednie dane z bazy danych i je wyświetlić. Jest to prostsze niż tworzenie wielu plików statycznych html (i łatwiejsze w zarządzaniu).

A teraz sobie pomyśl co by było, gdyby wmówić serwerowi, że posiadasz plik ksiazka_1.htm i gdy użytkownik wejdzie na tą stronę to tak naprawdę odpali plik index.php z parametrem jaka=1 (zamiast 1 mam na myśli dowolną liczbę, albo nawet ciąg znaków). W tym wypadku łapiesz dwie sroki za jeden ogon - zarówno tworzysz serwis przyjazny dla wyszukiwarek, jak również nie musisz tworzyć wiele plików html. Takie rozwiązanie jest możliwe i to jest ten cały mod_rewrite! Aby serwer wiedział, że chcesz korzystać z mod_rewrite musisz go jakoś o tym poinformować a także wytłumaczyć mu, że jak użytkownik chce wywołać plik ksiazka_.html to tak naprawdę ma być odpalony plik index.php z parametrem jaka=. Aby to zrobić należy utworzyć plik .htaccess (tak, nazwa tego pliku zaczyna się od kropki) o następującej zawartości:

RewriteEngine On
RewriteRule ^ksiazka_([0-9]*).htm /index.php?jaka=$1

Pierwsza linijka informuje serwer, że chcesz korzystać z mod_rewrite. Druga linijka to jest owa definicja. ciąg znaków ([0-9]*) oznacza dowolną liczbę. Gdyby nie było w nim gwiazdki, to owy ciąg znaków oznaczałby jedynie cyfrę. Natomiast $1 oznacza, że w tym miejscu jest wstawiony pierwszy parametr z owego wzorca (tym wzorcem jest liczba, która znajduje się pomiędzy ciągiem znaków ksiazka_ a ciągiem znaków .htm).

Uwaga: pliki .htaccess działają na cały katalog wraz z podkatalogami. Jeśli przykładowo wrzucisz owy plik do głównego katalogu, ale nie chcesz, aby mod_rewrite działało dla jakiegoś podkatalogu, to należy wrzucić do tego podkatalogu plik .htaccess o następującej zawartości:

RewriteEngine Off

Uwaga2: plik .htaccess jest plikiem ukrytym (dla serwerów linuxowych każdy plik którego pierwsza litera w nazwie to kropka jest plikiem ukrytym). Nie wszystkie klienty FTP go pokazują (czasami trzeba włączyć opcję pokazuj pliki ukryte). Dlatego nie przestrasz się, gdy nie zobaczysz tego pliku na serwerze a mod_rewrite działa ;-)

--
Damian Daszkiewicz prowadzi serwis SkutecznyPartner.pl poświęcony programom partnerskim

Artykuł pochodzi z serwisu www.Artelis.pl
 

Damian Daszkiewicz - książki & ebooki

 
programowanie, internet, komputery, C++, PHP Damian Daszkiewicz
PHP dla zielonych. rawdopodobnie najbardziej przystępny kurs PHP w internecie.
 
 

Najnowsze wpisy premium

  • Udane wakacje

    Przygotowanie do wakacji nie jest wcale trudne. Przede wszystkim musimy wiedzieć po co wybieramy się na urlop...

  • Zarządzanie własnym czasem

    Czas to pieniądz. Ale co zrobić, by odpowiednio nim zarządzać?

Zobacz wszystkie wpisy.

Dodaj wpis »