【问题标题】:nginx url prameter rewritenginx url参数重写
【发布时间】:2018-10-29 10:23:31
【问题描述】:

我们正在迁移论坛软件并希望保留我们的链接权益。我正在尝试从

重写nginx中的url
/forum/read.php?1,171967,171967#msg-171967

/forum/discussion/171967

它匹配 171967 个字符串中的哪一个并不重要。我试过了:

rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/$2 redirect;

和其他几种变体都无济于事。

【问题讨论】:

    标签: nginx url-rewriting nginx-location


    【解决方案1】:

    您尝试捕获的消息编号是查询字符串的一部分,因此不是rewritelocation 指令使用的规范化URI 的一部分。请参阅this document 了解更多信息。

    如果/forum/read.php在新版论坛软件中不是有效的URI,你可以使用精确匹配location来隔离它。

    在查询字符串上运行正则表达式的最简单方法是使用if 块。

    例如:

    location = /forum/read.php {
        if ($args ~ ,([0-9]+),) {
            return 301 /forum/discussion/$1;
        }
    }
    

    请参阅this caution 了解if 的使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多