两种方式, 测试都可以
1: tryfiles的方式, 有版本限制
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
2: 直接正则替换
关键代码如下
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
set $path_info "";
location /index.php {
if ($uri ~ "^/index.php(/.+)$") {
set $path_info $1;
}
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
}
实际开发中展示
server {
listen 80;
server_name bkdemo.local bkdemo.local;
root "/local/var/nginx/www.w.com/db_bscore/public";
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
index index.php index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
autoindex off;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
```
set $path_info "";
location /index.php {
if ($uri ~ "^/index.php(/.+)$") {
set $path_info $1;
}
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
}
```
}