2011-06-26 8 views
35

J'ai imprimé $ _SERVER, et j'ai découvert que $ _SERVER['REDIRECT_URL'] vs $_SERVER['REQUEST_URI'] ont les mêmes valeurs. Quelle est la différence entre les deux?

Répondre

42

REQUEST_URI est le chemin d'accès URI demandé et la requête utilisés dans HTTP request line. REDIRECT_URL is created by Apache lorsqu'une redirection interne se produit:

REDIRECT_ variables d'environnement sont créées à partir des variables d'environnement qui existaient avant la redirection. Ils sont renommés avec un préfixe REDIRECT_, c'est-à-dire que HTTP_USER_AGENT devient REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS, et REDIRECT_QUERY_STRING sont garantis, et les autres en-têtes ne seront définis que s'ils existaient avant la condition d'erreur.

Notez que REDIRECT_URL ne contient que le chemin URI.

+3

'REDIRECT_URL' renvoie l'URL normale, par exemple. '/ review', d'autre part' REQUEST_URL' renvoie une chaîne de requête, par ex. '/ review? page = 4' – AlbertSamuel

+0

superbe j'ai été coincé entendre depuis longtemps –

+0

@AlbertSamuel" 'REQUEST_URL'" - Cela devrait être 'REQUEST_URI' (avec un' I'). – MrWhite

15

$_SERVER['REDIRECT_URL'] n'est disponible que sur certains serveurs dans certains cas. Utilisez $_SERVER['REQUEST_URI'] à la place.

+2

Soyez être conscients qu'ils pourraient avoir des comportements différents, puisque REQUEST_URI contient la chaîne de requête! (J'ai eu un problème avec mon API) – Miguel

11

REQUEST_URI change aussi les caractères spéciaux comme des espaces à « 20% », etc.

Questions connexes