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