nginx位置正则expression式/ yyyy / mm / dd /

我试图通过其他服务器上的地址example.com/donor/2014/12/07/Name传递请求。

URIs like /donor/2014/12/07/Mike /donor.php?yyyy=2014&mm=12&dd=07&donor=Name /donor/2014/12/07/Mike ,我需要将它们转换为查询types: /donor.php?yyyy=2014&mm=12&dd=07&donor=Name

我目前的设置是:

 location ~* ^/donor/+$ { rewrite ^/(.*) /donor.php?yyyy=$1&mm=$2&dd=$3&donor=$4 break; proxy_pass http://XXXX; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 

您至less需要学习正则expression式写作和nginx请求处理的基础知识。

这比较合适:

 location /donor/ { rewrite ^/donor/(\d{4})/(\d{2})/(\d{2})/(\w+)$ /donor.php?yyyy=$1&mm=$2&dd=$3&donor=$4? break; proxy_pass http://XXXX; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 

如有必要,您必须使用proxy_redirect处理Location标头重写。