两种方式, 测试都可以
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; } ``` }
0则评论给“nginx支持rewrite”