### 隱藏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`。