Apache добавляет завершающую косую черту, несмотря на RewriteRule

Я использую простой .htaccess для обработки всего с помощью сценария PHP:

RewriteEngine on
RewriteRule . index.php

Мой index.php просто повторяет сервер переменных на данный момент (с print_r ($ _ SERVER) ); Все работает нормально, в URL все набираю и показано содержимое index.php . Однако, учитывая это структура:

test/           # document root
  folder/       # empty folder
  index.php
  .htaccess

Я заметил, что доступ к [сайт] / папка сначала перенаправляет браузер на [site] / folder / , а затем показывает правильное содержимое index.php . Почему это происходит? Разве правило перезаписи не должно перенаправлять все? «как есть»?

Используется с виртуальным хостом, настроенным для локального тестирования веб-сайта. Сконфигурирован по минимуму. Могли ли быть другие файлы apache загружается до моего .htaccess ?

<VirtualHost *:80>
    ServerName test.local
    DocumentRoot /Library/WebServer/Documents/test/
</VirtualHost>

В настоящее время используется OS X 10.10.

3
задан 20 December 2016 в 16:38
1 ответ

Как определено в комментариях выше, директива DirectorySlash управляет это конкретное поведение Apache и rewriterule не вызывали его. Эта директива по умолчанию на . Если вы установите для него значение выключено , то при запросе URI, который сопоставляется с каталогом в файловой системе без косой черты в конце, Apache не будет перенаправлять запрос на тот, который содержит косую черту в конце.

Подробнее информация в документации здесь: https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash

2
ответ дан 3 December 2019 в 06:57

Теги

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