如何在Nginx中使用mod_rewrite进行多次查询

时间:2018-06-12 16:38:58

标签: regex nginx mod-rewrite

我正在使用Mod_rewrite清除链接,但只能使用slug顺利运行。

不幸的是,当有多个slu ..时,它不起作用。

仅适用于1个slug,例如[working]:

location / {
        if (!-e $request_filename){
            rewrite ^/(.+)$ /index.php?id=$1 last; 
        }
    }

只有2个slu [[不工作]:

location / {
        if (!-e $request_filename){
            rewrite ^/(.+)$ /index.php?id=$1 break; 
            rewrite ^/(.+)/(.+)$ /index.php?id=$1&idno=$2 last; 
        }

我怎样才能做多个?

1 个答案:

答案 0 :(得分:0)

您需要先放置更具体的正则表达式。你的正则表达式^/(.+)$将匹配one-slug和two-slug case,所以第二个语句永远不会被测试。

此外,您应该将rewrite...last用于两个重写语句,因为您正在重写将在另一个location块中处理的PHP脚本。

例如:

location / {
    if (!-e $request_filename){
        rewrite ^/(.+)/(.+)$ /index.php?id=$1&idno=$2 last; 
        rewrite ^/(.+)$ /index.php?id=$1 last; 
    }
}

有关详情,请参阅this document