在htaccess或PHP中使用$\u GET时删除public
我正在学习创建自己的PHP MVC框架。这是我的URL结构:在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
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]