我有nginx设置,但是我需要解决一个问题,有人input“/ Home”来:
实际的目录和文件布局确实包含混合的大写和小写字符。 为了简单起见,我想保留这个,例如/ Home和/ About是实际的目录,但是对于SEO,我想永久redirect到小写/ home,但是find实际的/ Home目录。
我不确定这是否可以通过重写规则来完成,或者是否在“位置/ {}”或某个组合上不区分大小写。
location / { try_files $uri $uri/ /Home; }
注意:我不是在寻找属于Nginx陷阱的答案, 包括邪恶的Ifs 。
正如在你的问题的评论中所提到的,这可以通过使用Perl模块。 假设你将使用$uri_lowercase
你可以这样写:
location / { try_files $uri $uri/ $uri_lowercase $uri_lowercase/ =404; }
不过要注意的是,如果你有像/Home/UseR/teSt.html
这样的/Home/UseR/teSt.html
混合的URL,$ uri_lowercase可能不适合你的需求,你需要尝试所有的部分小写的uri。 如果这是你的情况,我强烈build议你的目录得到一些政策,并要求他们是小写。