加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

用Nginx和PHP重写fastcgi仍然将旧的request_uri发送到后端(php和

发布时间:2020-12-13 21:39:10 所属栏目:Nginx 来源:网络整理
导读:我试图将运行symfony框架的php网站迁移到nginx和php over fastcgi. 这一切都很好地利用了http://wiki.nginx.org/的Symfony howto但我遇到了自定义重写规则的麻烦. 我的目标是将/ aaaa形式的URL重写为/ view / shorthand / aaaa.然后应该由php和symfony对请求

我试图将运行symfony框架的php网站迁移到nginx和php over fastcgi.

这一切都很好地利用了http://wiki.nginx.org/的Symfony howto但我遇到了自定义重写规则的麻烦.

我的目标是将/ aaaa形式的URL重写为/ view / shorthand / aaaa.然后应该由php和symfony对请求进行处理.

旧的apache重写规则:

RewriteRule ^([0-9a-f]+)$index.php/view/shorthand/$1 [L]

我尝试过的Nginx规则:

rewrite ^/([0-9a-f]+)$/view/shorthand/$1 break;
rewrite ^/([0-9a-f]+)$/index.php/view/shorthand/$1 break;

他们都被发送到fastcgi但是request_uri似乎仍然是/ aaaa,因为我收到此错误:

FastCGI sent in stderr: "Action "aaaa/index" does not exist" while reading response header from upstream

我也尝试过使用try_files而没有任何运气.请指教.

最佳答案
问题在于默认的FastCGI变量集(fastcgi_params配置文件),其中REQUEST_URI等于nginx的$request_uri.但是如果你仔细阅读Nginx documentation,你会注意到$request_uri和$uri变量之间的区别.

> $request_uri =完整的原始请求URI(带参数)
> $uri =请求中的当前URI,已规范化

$uri的值可能在请求处理期间发生变化,例如进行内部重定向时,或使用索引文件时.因此,如果要在传递给PHP之前修复REQUEST_URI值,只需将$request_uri更改为$uri?$args in fastcgi_params.

这是Nginx领导开发者Igor Sysoev recommends in the official mailing list的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读