2010-11-19 30 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