【问题标题】:How do multiple query with mod_rewrite in Nginx如何在 Nginx 中使用 mod_rewrite 进行多次查询
【发布时间】:2018-11-22 03:17:34
【问题描述】:

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

不幸的是,当有多个蛞蝓时它不起作用。

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

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

仅适用于 2 个蛞蝓 [不工作]:

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

我怎样才能做多个?

【问题讨论】:

    标签: regex nginx mod-rewrite


    【解决方案1】:

    您需要先放置更具体的正则表达式。您的正则表达式 ^/(.+)$ 将同时匹配 one-slug 和 two-slug 的情况,因此第二条语句永远不会被测试。

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

    例如:

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

    请参阅this document 了解更多信息。

    【讨论】:

    • 我现在明白为什么了。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2014-03-01
    • 1970-01-01
    • 2021-12-14
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多