Nginx 使用正则表达式进行 301 重写

Nginx 使用正则表达式进行 301 重写

我已转到一个新的软件,现在需要捕获旧的 URL 并将其重写为新的 URL。

以下是一个例子:

旧网址:http://www.religiousforums.com/forum/neopagan-revival-religions-dir/19088-druid-horoscope-whats-your-sign.html 新网址:https://www.religiousforums.com/threads/druid-horoscope-whats-your-sign.19088/

我尝试了这个但是没有用:

    location ~* ^/forum/[^/]+/[0-9]+-[^\.]+\.html$ {
            rewrite [^/]+/([0-9]+)-[^\.]+\.html$ /threads/$1/ last;
    }

我这里漏掉了什么?我只需要新 URL 中的 ID。文本并不重要。

答案1

更新:不清楚你想做什么

如果你的意思是想从两个 URL 提供相同的内容,那么你应该这样做内容重复这是个很糟糕的想法。现在重定向正确地从旧 URL 迁移到新 URL,您必须进行以下设置:

location ~* ^/forum/[^/]+/([0-9]+)-([^.]+)\.html$ {
    return /threads/$2.$1 permanent;
}

或者简单地把它放在一个公共位置块中:

location /forum {
    rewrite ^/forum/[^/]+/([0-9]+)-([^.]+)\.html$ /threads/$2.$1 permanent;
}

编辑:这有效:

location /forum/ {
    rewrite ^/forum/[^/]+/([0-9]+)-([^.]+)\.html$ /threads/$1/ permanent;
}

相关内容