У меня давняя проблема с общим хостингом 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.