$_SERVER['REQUEST_URI'] 不返回服务器名

Posted

技术标签:

【中文标题】$_SERVER[\'REQUEST_URI\'] 不返回服务器名【英文标题】:$_SERVER['REQUEST_URI'] not returning the servername$_SERVER['REQUEST_URI'] 不返回服务器名 【发布时间】:2011-07-27 12:27:41 【问题描述】:

最近我在将文件上传到我的新服务器时遇到了奇怪的问题。

我正在使用 $_SERVER['REQUEST_URI'] 来查找当前页面位置并添加一些参数并重定向如下:

<a href="<?php echo $_SERVER['REQUEST_URI'].'&action=edit&uin=1';?>">Edit</a>

它在我的本地计算机上运行良好并重定向到我的页面:

localhost/admin/home.php?module=Pages&action=edit&uin=1

和我的标签:

<a href="http://localhost/sitename/admin/home.php?module=Pages&action=edit&uin=1">Edit</a>

但是在我的测试服务器中,它生成了没有服务器名的 url,所以它变成了:

<a href="http://admin/home.php?module=Pages&action=edit&uin=1">Edit</a>

并重定向到:http://admin/home.php?module=Pages&amp;action=edit&amp;uin=1 导致重定向到无效页面...

那么想知道是哪个服务器设置造成了这种差异吗?

我们该如何解决呢?两者结果相同

【问题讨论】:

PHP引擎前面的代理。 没找到你?那么我们该如何解决呢?结果相同 根据你的例子 $_SERVER['REQUEST_URI'] 有"http://admin/home.php?module=Pages" 是的,它返回的结果和你说的一样,但是在本地它变成 admin/home.php?module=Pages&action=edit&uin=1"> 但在服务器中 admin/…> 阅读此question 【参考方案1】:

PHP 文档可以告诉您区别:

'PHP_SELF'

当前文件名 执行脚本,相对于 文档根目录。例如, $_SERVER['PHP_SELF'] 在脚本中 地址 http://example.com/test.php/foo.bar 将是/test.php/foo.bar。这 FILE 常量包含当前文件的完整路径和文件名(即 包括)文件。如果 PHP 作为 命令行处理器这个变量 包含自 PHP 以来的脚本名称 4.3.0。以前它不可用。

'SCRIPT_NAME'

包含当前脚本的路径。 这对于需要 指向自己。 文件 常量包含完整路径和 当前的文件名(即 包括)文件。

'REQUEST_URI'

给出的URI是为了 访问此页面;例如, '/index.html'

【讨论】:

以上是关于$_SERVER['REQUEST_URI'] 不返回服务器名的主要内容,如果未能解决你的问题,请参考以下文章

$_SERVER['REQUEST_URI'] 在实时站点中不起作用

PHP_$_SERVER中QUERY_STRING,REQUEST_URI的用法

当虚拟主机下获取不到$_SERVER['REQUEST_URI']时,的解决方案

详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别

转载详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别

php $_SERVER 中的 QUERY_STRING和REQUEST_URI