2011-06-26 11 views
35

Wydrukowałem $ _SERVER, i dowiedziałem się, że $ _SERVER['REDIRECT_URL'] vs $_SERVER['REQUEST_URI'] mają te same wartości. Jaka jest różnica między tymi dwoma?

Odpowiedz

42

REQUEST_URI to żądana ścieżka URI i zapytanie używane w HTTP request line. REDIRECT_URL is created by Apache gdy wewnętrzne przekierowanie dzieje: zmienne

REDIRECT_ środowisko są tworzone ze zmiennych środowiskowych, które istniały przed przekierowaniem. Są one przemianowane prefiksem REDIRECT_, tj. HTTP_USER_AGENT staje się REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS i REDIRECT_QUERY_STRING są gwarantowane, a pozostałe nagłówki zostaną ustawione, tylko jeśli istniały przed wystąpieniem błędu.

Należy pamiętać, że REDIRECT_URL zawiera tylko ścieżkę URI.

+3

'REDIRECT_URL' zwraca normalny adres URL, np. '/ review', z drugiej strony' REQUEST_URL' zwraca łącznie ciąg zapytania, np. '/ review? page = 4' – AlbertSamuel

+0

superb i utknąłem przez długi czas –

+0

@AlbertSamuel" 'REQUEST_URL'" - To powinno być 'REQUEST_URI' (z' I'). – MrWhite

15

$_SERVER['REDIRECT_URL'] jest dostępny tylko na niektórych serwerach w niektórych przypadkach. Zamiast tego użyj $_SERVER['REQUEST_URI'].

+2

Bądź mieć świadomość, że mogą one mieć różne zachowania, ponieważ REQUEST_URI zawiera ciąg zapytania! (Miałem problem z moim API) – Miguel

11

REQUEST_URI zmienia również znaki specjalne jak przestrzenie do „% 20” itd

Powiązane problemy