删除 nginx 中某些 URL 的尾部斜杠

删除 nginx 中某些 URL 的尾部斜杠

我最近将我的博客从 WordPress 转移到了 Jekyll(我喜欢将静态文件用于我的博客的想法)。我正在使用 Nginx(之前与 PHP-FPM 一起使用),并设置了一些处理东西。我遇到了一个我不知道如何解决的问题。

我使用的 URL 结构是

/atthekeyboard/YYYY/MM/DD/title-of-post 

我有大约 5 年的博客文章被谷歌索引,它们

/attheykeyboard/YYYY/MM/DD/title-of-post/

我想重写所有带有尾随斜杠的旧调用,以使用非尾随斜杠 URL,直到 Google 索引所有新内容。

以下是我已经拥有的 nginx 配置内容:

    location /atthekeyboard {
            index index.html;
            try_files $uri.html $uri/ /notfound.html;
    }

我使用 try_files 是因为帖子实际上保存为 title-of-post.html 并且我不想要 .html 部分。

提前感谢您的建议和解决方案!

答案1

类似这样的操作应该删除尾随的斜杠,然后让 Nginx 重新解析位置块。

location ~ ^(/atthekeyboard/.+)/$ {
    set $noslash $1;
    rewrite ^ $noslash permanent;
}

答案2

我认为HTTPRewriteModule就是你要找的

相关内容