Назад | Перейти на главную страницу

Ошибка Apache 404, когда в пути указан индекс

У меня давняя проблема с общим хостингом mod_rewrite и 1and1 (надеюсь, что из-за общего хостинга это не переносится на sharedserverfault). Все, что касается правил перезаписи, работает нормально, за исключением случаев, когда в пути указан индекс. Затем я получаю ошибку Apache 404.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Пока что довольно стандартно, отлично работает на большинстве серверов. На сервере 1and1 я получаю ошибку 404, если index является верхним «каталогом». Все, что начинается с "http://example.com/index'даст 404.

Если я скопирую index.php в bootstrap.php и изменю файл .htaccess, указав туда, и Удалить index.php, он будет работать.

Однако это затрудняет обновление сервера - есть идеи, какие настройки apache вызывают это? Очевидно, я не могу изменить основной файл конфигурации, но я могу переопределить настройки с помощью файла .htaccess.

Нашел ответ Вот:

После некоторого поиска решение состоит в том, чтобы отключить что-то под названием MultiViews. Опция MultiViews позволяет вызывать файл, даже если расширение не загружено, поэтому index будет искать любые файлы, называемые index, независимо от их расширения.

Итак, решение - добавить:

Options -MultiViews

в файл .htaccess.

Если вы назовете файл index и поместите его в свой корень, это 404 или загрузите этот файл? Я бы попытался переопределить DirectoryIndex в вашем файле .htaccess. По умолчанию обычно используется index.html, но, возможно, ваш - просто index.