PHP: $_SERVER ['REDIRECT_URL'] против $_SERVER ['REQUEST_URI']

Я напечатал $_SERVER, и я узнал, что $ _SERVER['REDIRECT_URL'] vs $_SERVER['REQUEST_URI'] имеют одинаковые значения. Какая разница между двумя?

Ответ 1

REQUEST_URI - это запрошенный путь и запрос URI, используемые в строке HTTP-запроса. REDIRECT_URL создается Apache, когда происходит внутреннее перенаправление:

REDIRECT_ переменные среды создаются из переменных среды, существовавших до перенаправления. Они переименовываются с префиксом REDIRECT_, т.е. HTTP_USER_AGENT становится REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS и REDIRECT_QUERY_STRING гарантированно будут установлены, а другие заголовки будут установлены только в том случае, если они существовали до условия ошибки.

Обратите внимание, что REDIRECT_URL содержит только путь URI.

Ответ 2

$_SERVER['REDIRECT_URL'] доступен только на некоторых серверах. Вместо этого используйте $_SERVER['REQUEST_URI'].

Ответ 3

REQUEST_URI также изменяет специальные символы, такие как пробелы, на "%20" и т.д.