Нежелательное перенаправление Apache из каталога в файл с тем же именем - PullRequest
2 голосов
/ 31 октября 2011

Мне кажется, я ищу настройку или мод Apache, который выполняет это поведение, потому что мне нужно его отключить или каким-то образом изменить.Вот предложение:

У меня есть собственная CMS, у которой есть собственный маршрутизатор для обработки перенаправлений, 404 ошибки и красивые URL-адреса.Правила mod_rewrite отлично работают для направления соответствующих запросов к этому маршрутизатору, но есть странный случай, который заставляет Apache сходить с ума и даже никогда не отправлять запрос к маршрутизатору.

  • Файл, расположенный в www.example.com/contact.form.php
  • Содержимое CMS по адресу www.example.com / contact / contact-us

Запросы на содержимое CMS должны отправляться маршрутизатору, поскольку он не соответствует файлу или каталогу, существующему в файловой системе.На самом деле происходит какой-то странный запрос, который находит файл contact.form.php, но каким-то образом заставляет Apache выдавать свою собственную ошибку 404.

Маршрутизатор предназначен для перехвата ошибок 404, поэтому экран 404 в Apacheникогда не должно быть видно.Все URL-адреса, введенные для этого домена за пределами контактного «каталога» (независимо от того, насколько абсурдны), попадают на мой маршрутизатор и либо получают правильный контент, либо показывают мою страницу 404.

Обходные пути, которые я пришелдо сих пор:

  • Измените имя файла на form.contact.php - что отключает любой контент CMS, который может в конечном итоге существовать в www.example.com / form /...
  • Создать пустой каталог на www.example.com / contact /

Конфликт явно связан с именем «каталога», соответствующим первомучасть имени файла PHP.Такое поведение существует всякий раз, когда это условие выполняется, и оно не существует, когда оно не выполняется.К сожалению, с CMS я никогда не могу гарантировать, что имена «каталогов» не будут конфликтовать с именами файлов PHP.По этой причине я сконцентрировался на настройке Apache.

Я искал все виды комбинаций ключевых слов и нигде не могу найти ответ.Есть идеи?

1 Ответ

1 голос
/ 07 января 2012

Нашел ответ в другом месте после долгих поисков.

Проблема в Опции MultiView включены.

Для меня я использую виртуальные хосты, но я настраиваю большинство своих настроек в файле user.confдля apache на Mac OSX Lion.Я не уверен, добавил ли я это, или он уже был там ...

Вот что я сделал

  1. Приложение Open Terminal
  2. type: cd / etc / apache2 / users
  3. type: ls
  4. Из распечатанного списка вы увидите файл, соответствующий вашему имени пользователя: USERNAME.conf, где USERNAMEваше действительное имя пользователя
  5. тип: sudo nano USERNAME.conf
  6. Возможно, вам придется ввести ваш пароль
  7. Найти эту строку: Опции Индексы MultiViews
  8. Измените его на: Параметры Индексы
  9. Ctrl + X для выхода, нажмите «y» при появлении запроса на сохранение файла и введите, когда он спросит о имени файла

Альтернативы

Вы можете добавить Опции -MultiViews, если там ничего нет.

Также вы можете отредактировать файл httpd.conf, если вышеприведенное не применимо.

А если вы используете виртуальные хосты, вы можете отредактировать файл httpd-vhosts.conf.Для каждого сайта отредактируйте параметр MultiViews в тегах.Либо добавив «Опции-MultiViews» или удалив «Опции MultiViews», если он существует.

Надеюсь, это поможет кому-то еще ...

...