### 隐藏index.php
可以去掉URL地址里面的入口文件`index.php`,但是需要额外配置WEB服务器的重写规则。
以`Apache`为例,需要在入口文件的同级添加`.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>
~~~
如果用的`phpstudy`,规则如下:
~~~
<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>
~~~
如果`index.php文件存放在public中`,规则如下:
~~~
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php [L,E=PATH_INFO:$1]
</IfModule>
~~~
接下来就可以使用下面的URL地址访问了
~~~
http://tp5.com/index/index/index
http://tp5.com/index/index/hello
~~~
如果你使用的`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>
~~~
如果是`Nginx`环境的话,可以在`Nginx.conf`中添加:
~~~
location / { // …..省略部分代码
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
~~~
更多的`Nginx`的`rewrite`用法可以参考[这篇文章](https://segmentfault.com/a/1190000008102599)。
> #### 提示:
>
> * * *
>
> 后面的示例访问地址,我们都假设配置了隐藏`index.php`。