mod_rewrites во вложенном .htaccess, вызывающий странное сообщение 404

У меня есть 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.

0
задан 10 September 2016 в 22:02
1 ответ

Если вам нужно только сообщить 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

0
ответ дан 24 November 2019 в 05:48

Теги

Похожие вопросы