nginx 将 url 重写为小写 url

nginx 将 url 重写为小写 url

我已经设置了 nginx,但是我需要修复当有人输入“/Home”时出现的问题:

  • 将其重写为小写的“/home”(对所有文件和目录执行此操作,而不仅仅是 home)但找到大写(如果有)文件。
  • 或者我需要添加另一个使用不区分大小写的字符“~*”的位置?

实际目录和文件布局确实包含大小写混合字符。为了简单起见,我想保留这一点,即 /Home 和 /About 是实际目录,但为了 SEO,我想永久重定向到小写的 /home,但找到实际的 /Home 目录。

我不确定这是否可以通过重写规则来实现,或者“位置/{ }”或某种组合是否不区分大小写。


        location / {
                try_files $uri $uri/ /Home;
        }

笔记:我不想寻找这样的答案Nginx 陷阱包括邪恶的如果

答案1

正如您在问题评论中提到的,这可以通过使用 perl 模块来实现。假设您将使用它,$uri_lowercase您可能会编写如下内容:

location / {
    try_files $uri $uri/ $uri_lowercase $uri_lowercase/ =404;
}

但请注意,如果您有大小写混合的 URL,则 $uri_lowercase 可能不适合您的需求/Home/UseR/teSt.html,并且您需要尝试所有部分小写 uri。如果您的情况如此,我强烈建议您制定一些目录政策,要求它们使用小写。

相关内容