首先tp5的訪問目錄指向到webroot/public文件夾中。
thinkphp的url訪問:http://serverName/index.php(或者其它應(yīng)用入口文件)/模塊/控制器/操作/[參數(shù)名/參數(shù)值...],這個需要支持pathinfo,Apache默認(rèn)支持,而Nginx不支持。
1.php.ini中的配置參數(shù)cgi.fix_pathinfo = 1
2.修改nginx.conf文件。
location ~ \.php(.*)$ {
????????????????fastcgi_pass?? 127.0.0.1:9000;
????????????????fastcgi_index? index.php;
????????????????#下面兩句是給fastcgi權(quán)限,可以支持 ?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;
????????}
3. 去掉/index.php/
修改nginx.conf文件
location / {
????????????index? index.html index.htm index.php;
????????????#autoindex? on;
??????????if?(!-e?$request_filename) {
????????????rewrite? ^(.*)$? /index.php?s=/$1?last;
????????????break;
??????????}
}
[ Nginx ]
在Nginx低版本中,是不支持PATHINFO的,但是可以通過在Nginx.conf中配置轉(zhuǎn)發(fā)規(guī)則實現(xiàn):
location / {
???if?(!-e?$request_filename) {
????????rewrite? ^(.*)$? /index.php?s=/$1?last;
????}
}
如果你的應(yīng)用安裝在二級目錄,Nginx的偽靜態(tài)方法設(shè)置如下,其中youdomain是所在的目錄名稱。
location /youdomain/ {
????if?(!-e?$request_filename){
????????rewrite? ^/youdomain/(.*)$? /youdomain/index.php?s=/$1?last;
????}
}