1

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

DirectoryIndex home.php
Options -Indexes
ErrorDocument 404 /404.php

Это прекрасно работает при отображении страницы HTTP 404, когда вы пытаетесь получить доступ к несуществующему файлу в браузере, но не отображает страницу ошибки при доступе к существующим файлам с использованием следующего синтаксиса:

http://localhost/<FileName>.php/<AdditionalCharacters>

Например, если я захожу в home.php/xyz , страница home.php загружается, но все относительные ссылки в HTML не работают. У меня нет home.php на моем сервере! В чем дело?

Есть ли директива или правило, которые я могу добавить в свой файл .htaccess чтобы остановить это поведение и вместо этого выдать ошибку HTTP 404?

1 ответ1

1

Эта функция называется "path_info" и обычно используется для запуска целых веб-сайтов из одного скрипта CGI (когда недоступны лучшие альтернативы, такие как mod_rewrite).

Если из-за URL-адреса сценарий CGI будет рассматриваться как каталог, Apache выполнит этот сценарий в обычном режиме, но предоставит ему дополнительные компоненты пути в переменной среды PATH_INFO . Многие вики-движки используют эту функцию - например, вы можете получить доступ к https://wiki.archlinux.org/index.php/Beginners%27_Guide/Preparation таким образом.

Это можно контролировать с помощью параметра AcceptPathInfo .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .