$_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&action=edit&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区别