![NGINX 位置块将 URL 段作为 URL 参数进行 fastcgi 处理。如何操作?](https://linux22.com/image/732485/NGINX%20%E4%BD%8D%E7%BD%AE%E5%9D%97%E5%B0%86%20URL%20%E6%AE%B5%E4%BD%9C%E4%B8%BA%20URL%20%E5%8F%82%E6%95%B0%E8%BF%9B%E8%A1%8C%20fastcgi%20%E5%A4%84%E7%90%86%E3%80%82%E5%A6%82%E4%BD%95%E6%93%8D%E4%BD%9C%EF%BC%9F.png)
我试图了解如何使这个位置块按预期工作。
## TESTING MOD REWITE FROM APACHE...
location /beta9/projects/project/ {
try_files $uri $uri/ /beta9/projects/project/index.php?$args;
fastcgi_pass php_processes;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
我怎样才能获取以下 URL
屏蔽 URL
http://localhost/beta9/projects/project/574
..并将其处理为...
原始网址
http://localhost/beta9/projects/project/?project_id=574
如您所见,这些 url 参数没有传递,并且 php 页面中断。
答案1
好吧。首先,感谢您投反对票,因为它激发了我进行更多研究。当您厌倦了在 stackoverflow 和 serverfault 上搜索此答案时,请记住将有 1 个或多个反对票且没有任何反馈的答案添加到书签中。具有讽刺意味的是,它就是那个。
以下一行代码可以作为解决方案。
## REWRITE - SEGMENT TO PARAMETER Coversion
location ~ /beta9/projects/project/ {
rewrite ^/beta9/projects/project/(\d+)$ /beta9/projects/project/index.php?project_id=$1 last;
}
如果能至少得到一些反馈,了解该解决方案中是否存在冗余,以及是否有更优雅的方法来实现这一点,那就太好了。