nginx中的大小写不敏感

时间:2016-02-08 12:32:19

标签: nginx configuration

我们有几个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中的区分大小写?我想为所有网址提供一个通用解决方案。

2 个答案:

答案 0 :(得分:0)

专门针对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,如上所述会涉及许多location块,我会考虑更改您的应用程序以处理小写URI,而不是期望Web服务器处理小写转换。

答案 1 :(得分:0)

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

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

希望这有帮助!