У меня есть простой вопрос, но я не могу найти ответ нигде
У меня есть сайт «mysite.com». Я могу получить доступ к странице индекса, набрав «mysite.com» или «mysite.com/index.php». Это отлично работает … однако, когда я пытаюсь перейти на «mysite.com/index.php/», страница загружается, но не корректно. что именно происходит? Я бы подумал, что он должен вернуть ошибку 404, так как index.php будет рассматриваться как (не существующий) каталог (т. Е. Я думаю, что он попытается найти «mysite.com/index.php/index.php»). Это явно не так. Может кто-нибудь, пожалуйста, скажите мне, что именно происходит? Это также верно, когда вы ставите что-либо после косой черты, то есть «mysite.com/index.php/hello»
Благодарю.
Это связано с вашей экологической переменной Apache под названием PATH_INFO.
PATH_INFO
Фактически, PATH_INFO связан с веб-сервером Apache, который обслуживает страницы PHP, а не PHP.
PATH_INFO – это переменная окружения, установленная Apache, когда включена директива AcceptPathInfo. Он будет содержать информацию о конце пути, которая следует за фактическим именем файла (или несуществующим файлом в существующем каталоге), будет принята или отклонена. Затем переменные окружения передаются в модуль Apache / CGI, который отвечает за отображение страницы.
Переменная доступна в PHP с использованием $ _SERVER ['PATH_INFO'].
Например, предположим, что location / test / указывает на каталог, который содержит только один файл here.html. Затем запросы на /test/here.html/more и /test/nothere.html/more собираются / больше как PATH_INFO.
Этот ответ скопирован с Andrew Moore Ссылка на оригинальный ответ
Когда сервер замечает, что «каталог» в URL-адресе является скриптом, а не фактическим каталогом, он запускает скрипт. Остальные компоненты пути в URL-адресе помещаются в переменную PHP $_SERVER['PATH_INFO']
.