TP5隐藏入口文件(public/index.php),phpstudy环境中apache服务器下
程序员文章站
2024-03-26 13:55:11
...
参考文章
.htaccess技巧: URL重写(Rewrite)与重定向(Redirect)
TP5.1隐藏public/index.php第二种方式
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 是什么意思?
效果图
未隐藏入口文件时:
隐藏入口文件后:
具体步骤
在TP5根目录中添加.htaccess文件就可以了,文件内容如下
<IfModule mod_rewrite.c> #如果mode_rewrite.c模块存在 则执行以下命令
Options +FollowSymlinks -Multiviews
RewriteEngine On #开启 rewriteEngine
# !-d 不是目录或目录不存在
RewriteCond %{REQUEST_FILENAME} !-d
# !-f 不是文件或文件不存在
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php [QSA,PT,L]
# 参数解释
# ^(.*)$: 匹配所有的路口映射
# QSA: (Query String Appending)表示保留参数入get传值?xxx==xx;
# PT: 把这个URL交给Apache处理;
# L: 作为最后一条,遇到这条将不再匹配这条之后的规则
</IfModule>
我的理解
我使用的是phpstudy集成环境,应用apache服务器
在设置了站点后,apache默认访问你设置的站点目录下的index.php或是index.html文件(这些配置是默认的)
但是在TP5根目录中是没有index.php,这个文件在public目录下,当我们访问了这个站点时,遇到.htaccess文件时,会先引用其中的配置(这个文件是apache的配置文件,在public目录中默认有一个)。而我们在.htaccess文件中所作的配置就是根据规则进行路由重定向,具体代码有中文注释。
下面这句代码的意思就是将你对于这个站点的所有路径访问转接到public/index.php中
RewriteRule ^(.*)$ public/index.php [QSA,PT,L]
# 参数解释
# ^(.*)$: 匹配所有的路口映射
# QSA: (Query String Appending)表示保留参数入get传值?xxx==xx;
# PT: 把这个URL交给Apache处理;
# L: 作为最后一条,遇到这条将不再匹配这条之后的规则