Inne pułapki:
1- Czasami warto wyłączyć MultiViews
Options -MultiViews
Nie jestem dobrze zorientowany we wszystkich możliwościach MultiViews, ale wiem, że psuje moje reguły mod_rewrite, gdy jest aktywny, ponieważ jedną z jego właściwości jest próba „zgadnięcia” rozszerzenia pliku, którego według niego szukam .
Wyjaśnię: załóżmy, że masz 2 pliki php w swoim katalogu internetowym, plik1.php i plik2.php i dodajesz te warunki i regułę do swojego .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ file1.php/$1
Zakładasz, że wszystkie adresy URL, które nie pasują do pliku lub katalogu, zostaną przechwycone przez plik1.php. Niespodzianka! Ta reguła nie jest honorowana dla adresu URL adresu http: // mojhost / plik2 / somepath . Zamiast tego zostajesz przeniesiony do pliku2.php.
Chodzi o to, że MultiViews automagicznie odgadło, że adres URL, którego faktycznie potrzebujesz, to http: //myhost/file2.php/somepath i chętnie Cię tam zaprowadził.
Teraz nie masz pojęcia, co się właśnie wydarzyło, i w tym momencie kwestionujesz wszystko, co myślałeś, że wiesz o mod_rewrite. Następnie zaczynasz bawić się regułami, próbując zrozumieć logikę stojącą za tą nową sytuacją, ale im więcej testujesz, tym mniej ma to sensu.
Ok, w skrócie, jeśli chcesz, aby mod_rewrite działał w sposób zbliżony do logiki, wyłączenie MultiViews jest krokiem we właściwym kierunku.
2- Włącz FollowSymlinks
Options +FollowSymLinks
Nie znam szczegółów tego, ale widziałem go wielokrotnie, więc po prostu zrób to.