- 前提:使用的是 apache 环境而不是 PHPStudy 之类
在ThinkPHP5 的官方文档中,隐藏 index.php 的方法需要在入口文件的同级添加 .htaccess 文件(官方默认自带了该文件),内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
我就纳闷,不是自带了 .htaccess 文件么,为什么不能隐藏 index.php 文件。
官方文档还说,如果你使用的 apache 版本使用上面的方式无法正常隐藏 index.php,可以尝试使用下面的方式配置 .htaccess 文件:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
更改了 .htaccess 文件还是没用,最后在文档下方浏览了 N 多个评论后成功解决:
- 打开 httpd.conf 配置文件
- 加载 mod_rewrite.so 模块,即将 LoadModule rewrite_module modules/mod_rewrite.so 前面的 # 号去掉
- 将 AllowOverride none 改为 AllowOverride All(有三处,必须全部改,一开始我就只改了一处)
网友评论