[英]URI rewrite with nginx and php-fpm with parameters
我在带有php-fpm的Nginx服务器上有很多不同的规则。
一个简单的重写就是使用以下命令将http:// server / $ 1?param = 1更改为http:// server / $ 1.php?param = 1
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
我还需要将http:// server / abc / 123重写为http://server/abc.php/123 ,并由php-fpm处理
这是fast-cgi代码:
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
这是位置重写
location @abc-php {
rewrite ^(.*)/abc/(.*)$ $1/photo.php/$2 last;
}
但是我一直收到404。我不确定我哪里出错了,我们将不胜感激。
您没有显示如何调用命名位置@abc-php
。 我怀疑您有这样的东西来管理无扩展PHP:
location / {
try_files $uri $uri/ @extensionless-php;
}
您可以将新的重写规则添加到现有的命名位置,如下所示:
location @extensionless-php {
rewrite ^(.*)/abc/(.*)$ $1/photo.php/$2 last;
rewrite ^(.*)$ $1.php last;
}
但是,您的fast-cgi块无法处理path_info,因此您需要在此处查找常规知识,或使用类似以下内容的方法:
location ~ ^(?<script>.*\.php)(?<pathinfo>.*)$ {
try_files $script =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $pathinfo;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.