Недавно я столкнулся со странным поведением при запросах каталогов в URL на серверах Apache.Я довольно плохо знаком с серверами Apache и HTACCESS, так что, возможно, кто-то может сообщить мне об этом.
Если на сервере есть подкаталог с именем example, и я пытаюсь запросить этот каталог,набрав www.example.com/example/ все работает как положено.Сервер Apache ищет файлы default.php, index.php и другие, как и ожидалось.Если я ввожу www.example.com/test, и нет файла или каталога, соответствующего «test», я получаю ошибку 404, как и ожидалось.Вот где это становится странным, если вы введете www.example.com/example (и www.example.com/example/ существует), сервер даже не вернет 404. На самом деле, он либо перенаправляет циклы, либо я получаюa "www.example.com/example не существует или недоступен".от моего провайдера.Это должно произойти?
Вот где это вызывает у меня проблему.У меня есть простой файл HTACCESS, который перенаправляет все запросы в строку запроса:
Options +FollowSymLinks +MultiViews -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^styles/[\d]{10}/(.*)\.(css|jpg|gif)$ styles/$1.$2 [NC,L]
RewriteRule ^scripts/[\d]{10}/(.*)\.(js|jpg|gif)$ scripts/$1.$2 [NC,L]
RewriteRule \.(css|jpe?g|png|gif|js|ico)$ - [L]
RewriteRule ^(.+)$ default.php?page=$1 [QSA,L,NC]
</IfModule>
Это прекрасно работает примерно в 99% случаев.Тогда есть проблема каталогов, которую я описал выше.Независимо от того, присутствует ли HTACCESS, если каталог запрашивается без конечной косой черты, все происходит не так, и это происходит как на моем локальном сервере, так и на моем общем хосте с Godaddy.Дело в том, что мне нужны любые запросы, такие как
www.example.com / example
, чтобы перейти к
по умолчанию.php? page = пример
, даже если есть каталог
/ example /
в списке.
Кроме того, я просмотрел журналы перезаписи, если каталог запрашивается без завершающей косой черты, сервер Apache даже не получает возможности обработать файл HTACCESS.
У кого-нибудь есть какие-нибудь решения?