person
  • 前提:使用的是 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(有三处,必须全部改,一开始我就只改了一处)

新评论