【问题标题】:Case insensitivity in nginxnginx 不区分大小写
【发布时间】:2016-02-08 12:32:19
【问题描述】:

我们有几个 SEO 页面,例如:

http://www.example.com/PageOne.html

我们在配置中重定向如下:

location = /PageOne.html {
  rewrite ^/(.*) /seo.php?id=1 last;
}

问题是如果用户通过键入以下内容访问此页面:

http://www.example.com/pageone.html

“页面未找到”错误正在显示。大约有 500 多个 seo 页面。如何为 nginx 编写规则以忽略 url 中的大小写敏感?我想要一个适用于所有 url 的通用解决方案。

【问题讨论】:

    标签: nginx configuration


    【解决方案1】:

    专门针对PageOne.html,您可以执行以下操作:

    location ~ /PageOne.html {
        return 301 http://www.example.com/pageone.html$1;
    }
    

    如果您有多个需要重定向的 URI,那么is to use Perl 似乎是最佳选择:

    location ~ [A-Z] {
      perl 'sub { my $r = shift; $r->internal_redirect(lc($r->uri)); }';
    }
    

    如果您有数百个独特的 URI,这些 URI 会涉及上述许多 location 块,我会考虑更改您的应用程序以处理小写 URI,而不是期望网络服务器处理小写转换。

    【讨论】:

    • 谢谢,但没有!我们有超过 500 页。所以这不合适,我认为
    【解决方案2】:

    这解决了我的问题。遗憾的是,与这些问题相关的文章并不多,甚至 nginx 也没有提供用户友好的帮助/教程。

            location ~* ^/-PageOne.html {
                 rewrite ^ /seo.php?page_id=1 last;
            }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2013-03-06
      • 2020-02-18
      相关资源
      最近更新 更多