![部分大写和小写导致 URL 无法到达同一个地方?](https://linux22.com/image/724445/%E9%83%A8%E5%88%86%E5%A4%A7%E5%86%99%E5%92%8C%E5%B0%8F%E5%86%99%E5%AF%BC%E8%87%B4%20URL%20%E6%97%A0%E6%B3%95%E5%88%B0%E8%BE%BE%E5%90%8C%E4%B8%80%E4%B8%AA%E5%9C%B0%E6%96%B9%EF%BC%9F.png)
我所在的组织有一个内容管理服务器,最近刚切换到 Apache。我不知道它之前运行的是什么,但我不确定为什么会发生以下情况,以及在切换后如何修复它。让我展示一下这个问题:
网址 1:http://example.org/1234EN.pdf
网址2:http://example.org/1234en.pdf
1234 是特定表单的编号,EN(或 en)部分表示表单使用的语言,在本例中为英语。问题是 URL 1 转到特定表单,但 URL 2 却没有转到任何地方。为了解决这个容易犯的错误,我不想创建并维护同一表单的两个版本,每个 URL 一个,因为表单的内容经常更改,然后需要为每个 URL 更新两个版本。此外,客户也不想承认用户错误,有些人无法说服他们输入大写部分。
有没有办法解决这个问题?重定向?或者有没有办法让 Apache 将末尾的小写后缀转换为大写版本?
答案1
当然,当您能够忽略大小写时,生活就会变得更加轻松,含义保持不变,对吧?
历史上:例如,Windows FAT32 文件系统保留了大小写,但不区分大小写,打开文件时不必使用与创建文件时相同的大小写,这一点与 Linux 不同。在 Linux 中,您必须使用完全相同的大小写。
但是你可以使用恰当命名的 Apache mod_speling 来调整 Apache 的行为,就好像文件系统不区分大小写一样 https://httpd.apache.org/docs/2.4/mod/mod_speling.html
<Directory /var/www/html>
CheckCaseOnly on
CheckSpelling on
</Directory>