Я напечатал $ _SERVER и обнаружил, что оба значения $ _SERVER['REDIRECT_URL'] против $_SERVER['REQUEST_URI'] имеют одинаковые значения. Какая разница между ними?
_SERVER['REDIRECT_URL']
$_SERVER['REQUEST_URI']
REQUEST_URI - запрашиваемый путь URI и запрос, используемые в строке HTTP-запроса . REDIRECT_URL создается Apache , когда происходит внутреннее перенаправление:
REDIRECT_ переменные среды создаются из переменных среды, которые существовали до перенаправления.Они переименовываются с префиксом REDIRECT_, т. Е. HTTP_USER_AGENT становится REDIRECT_HTTP_USER_AGENT. REDIRECT_URL, REDIRECT_STATUS и REDIRECT_QUERY_STRING гарантированно будут установлены, а остальные заголовки будутустанавливается только если они существовали до возникновения ошибки.
REDIRECT_ переменные среды создаются из переменных среды, которые существовали до перенаправления.Они переименовываются с префиксом REDIRECT_, т. Е. HTTP_USER_AGENT становится REDIRECT_HTTP_USER_AGENT.
REDIRECT_
HTTP_USER_AGENT
REDIRECT_HTTP_USER_AGENT
REDIRECT_URL, REDIRECT_STATUS и REDIRECT_QUERY_STRING гарантированно будут установлены, а остальные заголовки будутустанавливается только если они существовали до возникновения ошибки.
REDIRECT_URL
REDIRECT_STATUS
REDIRECT_QUERY_STRING
Обратите внимание, что REDIRECT_URL содержит только путь URI.
$_SERVER['REDIRECT_URL'] доступно только на некоторых серверах в некоторых случаях.Вместо этого используйте $_SERVER['REQUEST_URI'].
$_SERVER['REDIRECT_URL']
REQUEST_URI также изменяет специальные символы, такие как пробелы, на "% 20" и т. Д.