Другие подводные камни:
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
Я не знаю подробностей, но я видел, как он упоминается много раз, так что просто сделайте это.