nginx 使用查询字符串重写 URL

nginx 使用查询字符串重写 URL

我在 Google 上搜索了好一阵子,还是没搞明白。这看起来很简单,我也确信它很简单,但我不是服务器专家。

我的网址是:http://www.example.com/blog/?tag=Word1+Word2

有些标签是一个单词(例如:自行车),有些则较长(例如:两轮自行车)。

我需要将此 URL 输出为:example.com/blog/tag/word1-word2/

我该如何重写才能实现这一点?

答案1

您应该在查询中发送 - 而不是 + 以获得相同的格式并提出更简单的请求:

location ~ /blog/ {
    if ($args ~* "tag=(.*)") {
        set $w1 $1;
        rewrite .* /blog/tag/$w1/? permanent;
    }
}

根据我发布的链接

?最后将删除查询字符串参数(从重写文档

如果在重写末尾指定 ?,则 Nginx 将删除原始 $args(参数)

实现它的另一种方法是将 args 设置为无:

set $args '';

相关内容