NGINX 位置块将 URL 段作为 URL 参数进行 fastcgi 处理。如何操作?

NGINX 位置块将 URL 段作为 URL 参数进行 fastcgi 处理。如何操作?

我试图了解如何使这个位置块按预期工作。

## 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;
}

如果能至少得到一些反馈,了解该解决方案中是否存在冗余,以及是否有更优雅的方法来实现这一点,那就太好了。

相关内容