$ _SERVER ['REQUEST_URI']不返回servername

时间:2011-04-01 08:27:53

标签: php apache2

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

我正在使用$ _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>

但在我的测试服务器中,它生成了没有servername的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导致重定向到无效页面...

所以想知道哪个服务器设置正在创造这种差异?

我们如何解决它?两者都相同

1 个答案:

答案 0 :(得分:2)

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'