隱藏的index.php
PS:這里說的入口文件指的是公共/ 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>
如果訪問出現404的話,請修改配置文件vhosts-ini,原因請參考官方文檔:https://www.kancloud.cn/manual/thinkphp5/177576
location / {
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
#autoindex on;
}
