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".