2011-07-05 76 views
11

例如,如果我將/category/topic/post/重寫爲/index.php?cat=1&topic=2&post=3,如何使用PHP獲得/index.php?cat=1&topic=2&post=3PHP:我怎樣才能得到用mod_rewrite重寫的URL?

+6

簡短的回答:不能。但是,如果您的應用程序知道重寫方案(即,您有反向映射),或者您有明確的重寫規則,則可以反轉重寫過程。 –

+3

@Emre'$ _SERVER ['REQUEST_URI']'將在Apache服務器和IIS 7.x上正常工作,如果使用URL Rewrite模塊v2。 – LazyOne

+0

你爲什麼要這個網址?可能會有更簡單的解決方案來完成您想要完成的任務。 – dqhendricks

回答

12

您可以很容易地重新創建它。 $_SERVER['PHP_SELF']仍然會爲您提供腳本的正確文件名。這應該做的伎倆:

$url = $_SERVER['PHP_SELF']; 
$parts = array(); 
foreach($_GET as $k=>$v) { 
    $parts[] = "$k=" . urlencode($v); 
} 

$url .= "?" . implode("&", $parts); 

$url現在是你正在尋找的URL。

編輯:@ carpereret的答案是好得多。給予好評而不是他

9

原始的URI應該在$_SERVER['REQUEST_URI']

+0

好的。此外,如果您正在重寫它,這會讓您在瀏覽器的地址欄上顯示完整的網址。 – LuBre