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
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
![CSS, PHP, tworzenie stron](http://www.ebookinfo.pl/covers/duze/profesjonalna-strona0.png)
Profesjonalna strona internetowa Zestaw publikacji o PHP i CSS.