2010-11-19 35 views
0

我使用这个变量获得当前页面的URL,就像这样:

$request = $_SERVER["REQUEST_URI"]; 

    $page = (is_ssl() ? 'https' : 'http').'://'; 
    if ($_SERVER["SERVER_PORT"] != "80") 
    $page .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$request; 
    else $page .= $_SERVER["SERVER_NAME"].$request; 

的应用程序。我这样做是公开的,问题是在一些网站(非常罕见),这个变量返回整个URL,包括域名,而不仅仅是请求的页面。这是服务器配置错误吗?

+0

你能告诉我们什么网络服务器引擎运行在你的应用程序部署的那些“非常罕见”的错误实例中? Apache,lighttpd,nginx? – stillstanding 2010-11-19 04:51:03

+0

可能是Apache。无论如何,我认为我发现了这个问题。这个程序。是WordPress的,用户有一个名为WPML的WP插件,它可能会改变重定向或者改变这个变量。 – Alex 2010-11-19 05:23:21

回答

2

它可能在你的代码(或第三方包)正在改变这个变量。

您可以grep

grep -r -E '\$_SERVER\[[\'"]?REQUEST_URI[\'"]?\]\s?=[^=]+?' 

该正则表达式应该找哪里$_SERVER['REQUEST_URI]被分配,而不仅仅是正常使用或测试平等,例如。也请注意,我删除了-i标志,因为PHP variables are case sensitiveso are array keys