Другие ловушки:
1- Иногда хорошая идея отключить MultiViews
Options -MultiViews
Я не очень разбираюсь во всех возможностях MultiViews, но я знаю, что когда он активен, мои правила mod_rewrite портятся, потому что одно из его свойств - попытаться «угадать» расширение файла, которое, по его мнению, мне нужно ищу.
Я объясню:
Предположим, у вас есть 2 php-файла в вашем веб-каталоге, file1.php и file2.php, и вы добавляете эти условия и правила в ваш .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ file1.php/$1
Предполагается, что все URL, которые не соответствуют файлу или каталогу, будут захвачены файлом file1.php. Сюрприз! Это правило не соблюдается для URL http://myhost/file2/somepath. Вместо этого вы попали внутрь file2.php.
То, что происходит, заключается в том, что MultiViews автоматически догадались, что URL, который вы на самом деле хотели, был http://myhost/file2.php/somepath, и с радостью перенесли вас туда.
Теперь вы не имеете ни малейшего представления о том, что только что произошло, и в этот момент вы подвергаете сомнению все, что, по вашему мнению, вы знали о mod_rewrite. Затем вы начинаете играть с правилами, чтобы попытаться понять логику этой новой ситуации, но чем больше вы тестируете, тем меньше в этом смысла.
Хорошо, короче, если вы хотите, чтобы mod_rewrite работал так, чтобы приближаться к логике, отключение MultiViews - это шаг в правильном направлении.
2 - включить FollowSymlinks
Options +FollowSymLinks
Этот, я действительно не знаю деталей, но я видел, что это упоминалось много раз, так что просто сделайте это.