nginx 位置正则表达式 /yyyy/mm/dd/

nginx 位置正则表达式 /yyyy/mm/dd/

我正在尝试传递来自example.com/donor/2014/12/07/Name另一台服务器上的地址的请求。

URI 就像/donor/2014/12/07/Mike,我需要将它们转换为查询类型:/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://X.X.X.X;
    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;
}

答案1

你至少需要学习正则表达式编写和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://X.X.X.X;
    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;
}

如果有必要,您必须处理Location标题重写proxy_redirect

相关内容