PHP:如何获取用mod_rewrite重写的URL?

时间:2011-07-05 20:45:34

标签: php mod-rewrite

例如,如果我将/category/topic/post/重写为/index.php?cat=1&topic=2&post=3,我如何才能使用PHP获取/index.php?cat=1&topic=2&post=3

3 个答案:

答案 0 :(得分:13)

您可以轻松地重新创建它。 $_SERVER['PHP_SELF']仍然会为您提供脚本的正确文件名。这应该可以解决问题:

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

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

$url现在将成为您正在寻找的网址。

编辑:@ carpereret的答案要好得多。反而投票给他

答案 1 :(得分:9)

原始uri应该在$_SERVER['REQUEST_URI']

答案 2 :(得分:0)

以下是在Apache中用mod_rewrite重写后如何获取PHP接收的URL:

 $url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

您可以将该URL与浏览器中的实际URL进行比较,以调试.htaccess中的所有重写规则。