ThinkPHP5.0 入口文件隐藏问题

  最近,遇到好些人都在TP5.0框架入口文件隐藏上边遇到问题,经过各方资料查找,总结了一篇这样的文章,希望对遇到困扰的你,有所帮助!
 
  要想隐藏入口文件,首先要知道入口文件在哪里?
 
  Think5.0入口文件默认存放位置:/public/index.php,当然也有项目也会修改入口文件位置,至于如何修改入口文件的位置,想了解的可以留言哈
 
  为什么要隐藏入口文件
 
  1.使URL看起来更加美观
 
  2.对SEO比较友好
 
  在了解入口文件的位置以及为什么要隐藏后,接下来咱们开始行动起来吧!
 
  以下为各环境下的隐藏入口文件的配置

[ Apache ]

1. 修改httpd.conf配置文件

加载mod_rewrite.so模块,将以下位置前的#去掉

 

  •  
LoadModule rewrite_module modules/mod_rewrite.so

将以下位置的AllowOverride None 将None改为 All

  •  
  •  
  •  
  •  
  •  
<Directory "${INSTALL_DIR}/cgi-bin">    AllowOverride None    Options None    Require all granted</Directory>

2. 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下

  •  
  •  
  •  
  •  
  •  
  •  
  •  
<IfModule mod_rewrite.c>Options +FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]</IfModule>

如果使用的为PHPstudy环境,请将以下内容放入.htaccess

  •  
  •  
  •  
  •  
  •  
  •  
  •  
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>

[ IIS ]

如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容

  •  
RewriteRule (.*)$ /index\.php\?s=$1 [I]

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
<rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(.*)$" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite>

[ Nginx ]

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:

  •  
  •  
  •  
  •  
  •  
  •  
location / { // …..省略部分代码   if (!-e $request_filename) {   rewrite  ^(.*)$  /index.php?s=/$1  last;   break;    } }

如果你的应用安装在二级目录,Nginx的伪静态方法设置如下,其中youdomain是所在的目录名称。

  •  
  •  
  •  
  •  
  •  
location /youdomain/ {    if (!-e $request_filename){        rewrite  ^/youdomain/(.*)$  /youdomain/index.php?s=/$1  last;    }}

原来的访问URL:

  •  
http://serverName/index.php/模块/控制器/方法/[参数/参数值....]

设置后,我们可以采用下面的方式访问

 

  •  
http://serverName/模块/控制器/方法/[参数/参数值....]