2011-06-26 164 views
35

我印制了$ _SERVER,我发现$ _SERVER['REDIRECT_URL']$_SERVER['REQUEST_URI']都具有相同的值。两者有什么区别?

回答

42

REQUEST_URI是在HTTP request line中使用的请求的URI路径和查询。 REDIRECT_URL is created by Apache发生内部重定向时:

REDIRECT_环境变量是根据重定向之前存在的环境变量创建的。它们被重命名为REDIRECT_前缀,即HTTP_USER_AGENT变为REDIRECT_HTTP_USER_AGENT

REDIRECT_URLREDIRECT_STATUSREDIRECT_QUERY_STRING保证设置,其他标题只有在错误条件之前存在时才会设置。

请注意,REDIRECT_URL只包含URI路径。

+3

'REDIRECT_URL'返回正常的URL,例如'/ review',另一方面'REQUEST_URL'返回包括查询字符串例如'/ review?page = 4' – AlbertSamuel

+0

非常棒,我被卡住了很长时间 –

+0

@AlbertSamuel“'REQUEST_URL'” - 这应该是'REQUEST_URI'(带'I')。 – MrWhite

15

$_SERVER['REDIRECT_URL']仅在某些服务器上可用。改为使用$_SERVER['REQUEST_URI']

+2

可以知道,他们可能有不同的行为,因为REQUEST_URI包含查询字符串! (我的API有问题) – Miguel

11

REQUEST_URI也改变特殊字符,如空格为“%20”等

相关问题