Перенаправление недействительных путей с помощью .htaccess (например, «home.php/xyz»)

Перенаправление недействительных путей с помощью .htaccess (например, «home.php/xyz»)

Я использую 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

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

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

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

Связанный контент