環境:win10 + php7.1 + nginx1.2 + ThinkPHP5
在使用 ThinkPHP5 過程中,用 url 函數生成鏈接地址時,地址中產生了 index.php
例:我們要生成一個 /home/news/list.html 的地址,結果生成的地址是 /index.php/home/news/list.html
在手冊中 URL 生成篇有介紹:

還可以寫成:
\think\Url::root('/');
其它配置:
.htaccess配置 (nginx 可忽略此文件)
<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配置
server{ listen 80;#監聽端口 server_name www.demo.com;#域名 index index.html index.htm; root D:/wnmp/demo/public; location / { index index.html index.htm index.php; #autoindex on; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; # access_log off; } location ~ .*\.(js|css)?$ { expires max; log_not_found off; access_log off; } error_page 500 502 503 504 /50x.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #下面兩句是給fastcgi權限,可以支持 ?s=/module/controller/action的url訪問模式 fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #下面兩句才能真正支持 index.php/index/index/index的pathinfo模式 fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
參考:
http://www.thinkphp.cn/topic/59367.html
https://www.kancloud.cn/manual/thinkphp5/118041
https://www.kancloud.cn/manual/thinkphp5_1/353977
