0

这是基本信息:我在 Windows 8 64 位上使用 WAMP。Apache 2.4.2,PHP 5.4+。

我的项目文件位于http://localhost/test/. 此.htaccess文件夹中的文件是:

RewriteEngine on

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?$1 [L,QSA]

如果我输入一个类似的 URL http://localhost/test/some/cool/stuff/,它可以正常工作

即在 PHP 中:$_SERVER['QUERY_STRING'] = index.php&some/cool/stuff/
我希望它也能去掉,index.php&但我在 PHP 中这样做。

而如果我输入一个像http://localhost/test/some/cool/stuff PHP$_SERVER['QUERY_STRING']返回的 URLindex.php&some/cool/stuff/&some/cool/stuff

&some/cool/stuff/部分是从哪里来的?

4

1 回答 1

1

我使用RewriteRule ^(.+)$ index.php [L] 然后通过$_SERVER['REQUEST_URI']

我使用 PHP 的这个函数来获取带有后备的请求 URL。

private static function get_request_URL() {
    if (isset($_SERVER["REDIRECT_URL"])) {
        $realURL = $_SERVER["REDIRECT_URL"];
    } elseif (isset($_SERVER["REQUEST_URI"])) {
        list($realURL) = explode("?", $_SERVER["REQUEST_URI"]);
    } else {
        return null;
    }
    $realURL = rtrim(trim(strtolower($realURL)), "/");
    if ($realURL == "") {
        $realURL = "/";
    }
    return $realURL;
}
于 2012-09-20T13:16:28.087 回答