У меня есть HTTP-сервер apache со структурой каталогов как таковой:
/
---- api/
---- ---- index.php
---- ---- .htaccess
---- index.php
---- .htaccess
/. Htaccess :
DirectorySlash Off
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ $1/
/api/.htaccess
RewriteEngine On
Моей целью было отобразить index.php из каталог, когда он был вызван без обратной косой черты в конце. Однако вызов http://domain.com/api приводит к ошибке 404. Добавление одной строки в /api/.htaccess заставляет все работать должным образом.
Мне трудно понять это поведение, поскольку в документе для RewriteEngine On ничего об этом не говорится. Может ли кто-нибудь пролить свет на работу mod_rewrite здесь?
Примечание: этот вопрос изначально был размещен на SO здесь , но ответа не получил. Я закрою его, если это решит проблему.
РЕДАКТИРОВАТЬ : Согласно @Jonah B ' В связи с предложением создания нового контекста перезаписи я попытался изменить правила /api/.htaccess на следующие:
RewriteEngine On
RewriteRule ^ index.php
, но результат остался прежним - все еще 404s.
Если вам нужно только сообщить apache, что запрос на маршрутизацию
/api
должен искать файл index.php в каталоге / api, используйте
DirectoryIndex index.php
Не беспокойтесь о движок перезаписи.
См .:
http://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex
http://www.htaccess-guide.com/directoryindex-uses/
https://stackoverflow.com/questions/2384423/index-php-not-loading-by-default