Інші підводні камені:
1- Іноді корисно відключити MultiViews
Options -MultiViews
Я не добре знаю всі можливості MultiViews, але я знаю, що він переплутує мої правила mod_rewrite, коли це активно, тому що одна з його властивостей - це спробувати і "здогадатися" про розширення файлу, який він вважає, що я шукаю .
Я поясню: припустимо, у вашому веб-режимі, file1.php та file2.php у вас є 2 файли 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
Про це я не знаю деталей, але я його бачив уже багато разів, тому просто робіть це.