操纵URL $ _SERVER ['REQUEST_URI']

Joh*_*ohn 1 php uri httprequest

这是我的网址: http://localhost/framework/index.php

echo $_SERVER['REQUEST_URI'];
Run Code Online (Sandbox Code Playgroud)

输出:/ framework/index.php

但如果我的网址是:

HTTP://本地主机/框架/

输出将是:

/framework/
Run Code Online (Sandbox Code Playgroud)

如果我移动文件,是的,你明白了.

如何抓取文件夹/最终index.php文件后的内容?我的想法是将index.php作为前端控制器.

如果我有:

HTTP://localhost/framework/index.php/test/test

我只想要测试/测试部分.

HTTP://本地主机/框架/测试/测试

我只想要测试/测试部分.

Dav*_*veo 6

您可以自动检测基础uri并将其删除,从而为您提供测试/测试部分.

if(!empty($_SERVER['PATH_INFO']))
{
    // Uri info does not contain docroot or index
    $uri = $_SERVER['PATH_INFO'];
}
else
{
    if(!empty($_SERVER['REQUEST_URI']) && !empty($_SERVER['HTTP_HOST']))
    {
       $fullUrl = 'http://'
                  . ((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : '')
                  . ((isset($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : '');

       $uri = parse_url($fullUrl, PHP_URL_PATH);
    }
    else if(!empty($_SERVER['PHP_SELF']))
    {
       $uri = $_SERVER['PHP_SELF'];
    }
}

$baseUri = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1);
$uri = str_replace($baseUri, '', $uri);
Run Code Online (Sandbox Code Playgroud)

编辑:上面的mAu评论是正确的.我假设你已经在使用mod重写了.