ThinkPHP 5.1 rewrite URL访问 隐藏入口文件 index.php 不通过解决办法

我的开发环境为:Windows7、WAMPSERVER 3.0.6 64bit,应用文件和ThinkPHP核心文件放在tp51文件夹下:

ThinkPHP 5.1 rewrite URL访问 隐藏入口文件 index.php 不通过解决办法_第1张图片

按照ThinkPHP5.1 官方手册建议:

第一步:将Apache的httpd.conf文件中

LoadModule rewrite_module modules/mod_rewrite.so

前面的#去掉,使得本语句有效;

第二步:将Apache的httpd.conf文件中所有的

AllowOverride none
改为
AllowOverride all

然后保存httpd.conf文件,并重启Apache服务器。

第三步:将thinkphp应用入口文件同级目录中添加.htaccess文件,在我的环境下即为:D:/projects/tp51/public/文件夹下

官方的默认配置如下:


  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

实际上我的电脑做好如上三部的设置后,还是无法访问,有下面的提示:

Not Found

The requested URL /Projects/tp51/public/index.php/index/index was not found on this server.


Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 80

 

然后按照网上的提示,将.htaccess文件地第7行中:index.php后面添加一个?,如下:


  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

如上设置后问题依然存在,后来怀疑可能是文件夹的原因,将上述文件加入文件夹路径约束:


  Options +FollowSymlinks -Multiviews 
  RewriteEngine on 
  
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteCond %{REQUEST_FILENAME} !-f 
  RewriteRule ^(.*)$ /tp51/index.php/$1 [QSA,PT,L] 
  

第7行index.php前用ThinkPHP应用根目录路径约束,也就是 /tp51/index.php,问题得到顺利解决。

ThinkPHP 5.1 rewrite URL访问 隐藏入口文件 index.php 不通过解决办法_第2张图片

根据此次解决问题的思路,在安装thinkcmf5过程中,出现rewrite检测不通过,通过该解决思路,问题也顺利解决。ThinkPHP 5.1 rewrite URL访问 隐藏入口文件 index.php 不通过解决办法_第3张图片

你可能感兴趣的:(PHP,ThinkPHP)