Wyjaśnienie krok po kroku podanych reguł htaccess

0

Witam

czy ktoś może mi wyjaśnić krok po kroku co to robi :

RewriteEngine on
RewriteCond $1 !^([a-zA-z0-9/])
RewriteRule ^(.*)$ index.php [L]
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Czytam, staram się to zrozumieć, ale jest to dla mnie czarną magią cały czas.

0

Są to dyrektywy serwera Apache dla modułu mod_rewrite dokonującego translacji (czyli przepisywania) adresów (zwykle na łatwiejsze do indeksacji).
Mamy tu inicjalizację i 2 pary reguł translacji w/g wzorca. Najłatwiej to przyrównać do pętli "if" w programowaniu. Wtedy mamy:

if (RewriteCond){
RewriteRule
}

Zatem u nas:

RewriteEngine on <- inicjalizacja modułu

RewriteCond $1 !^([a-zA-Z0-9]/) <- warunek: jeśli fragment łańcucha $1 (szukajac od początku) nie zaczyna się małą literą lub wielką literą lub cyfrą

**RewriteRule ^(.*)$ index.php [L] **<- translacja: zmień łańcuch na "index.php" i zakończ translację (flaga [L]).

RewriteCond $1 !^(index.php|images|robots.txt) <- warunek: jeśli fragment łańcucha $1 (szukajac od początku) nie zawiera "index.php" lub "images" lub "robots.txt"

RewriteRule ^(.*)$ index.php/$1 [L] <- translacja: zmień łańcuch na "index.php/łańcuch" i zakończ translację (flaga [L]).

P.S. Jeśli działasz na swoim lokalnym hoście i chcesz zobaczyć jak są przepisywane adresy, to stwórz sobie loga translacji (pusty plik z prawem zapisu) i bezpośrednio po RewriteEngine on dodaj jeszcze 2 linijki:

RewriteLog logs/rewrite.log <- ścieżka do loga translacji adresów
RewriteLogLevel 9 <- poziom zapisywnia translacji

P.P.S. Wątek całkowicie dotyczy serwera Apache i ma mało wspólnego z PHP dlatego powinien być otagowany jako "apache".

1 użytkowników online, w tym zalogowanych: 0, gości: 1