在htaccess或PHP中使用$\u GET时删除public

在htaccess或PHP中使用$\u GET时删除public,php,regex,.htaccess,mod-rewrite,Php,Regex,.htaccess,Mod Rewrite,我正在学习创建自己的PHP MVC框架。这是我的URL结构:http://www.mvc.dev/public/controller/methold/params 我正在使用以下函数获取当前URL。以下函数返回public/test1/test2/test3。我不想让公共文件显示 function parseUrl(){ if( isset($_GET['url']) ){ echo $_GET['url']; } } .htaccess 将URI转换为查询字符串 <If

我正在学习创建自己的PHP MVC框架。这是我的URL结构:
http://www.mvc.dev/public/controller/methold/params

我正在使用以下函数获取当前URL。以下函数返回
public/test1/test2/test3
。我不想让
公共文件显示

function parseUrl(){
  if( isset($_GET['url']) ){
    echo $_GET['url'];
  }
}
.htaccess 将URI转换为查询字符串

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /public

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

    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

选项-多视图
重新启动发动机
基础/公共
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(+)$index.php?url=$1[QSA,L]

请帮助,我如何从
public/test1/test2/test3
中删除
public
,创建此文件。htaccess在
文档根目录中(高于
public
的级别):


然后您可以使用链接作为
http://www.mvc.dev/controller/methold/params

我假设您只是出于测试目的,但是在您的生产环境中,如果不正确转义,您永远不应该将任何用户提供的信息直接回送到浏览器(如
echo$\u GET['url'];
)。
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]