17

我想使用 Apache 的模块使用不区分大小写的 URL mod_speling,但这会产生不需要的“多个选项”列表,而 Apache 文档说

设置后,此指令将拼写更正的操作限制为小写/大写更改。不执行其他可能的校正。

我正在 Apache 2.2.16 Unix 全新安装上对此进行测试,但我仍然遇到与 2008 年提交的完全相同的问题。

当 checkCaseOnly 指令打开时,Apache 列出了一些“多项选择”(状态代码 300),这是意外(并且不想要)的行为!

我有这个httpd.conf

CheckSpelling on
CheckCaseOnly on

第一个使用 的mod_speling指令,第二个指令仅限于大小写更正

我究竟做错了什么?

4

5 回答 5

10

TLDR:CheckCaseOnly 因截至 10/2014 六年多未修复的错误而损坏。

我知道这是一个老问题,但我遇到了同样的问题。此更新旨在帮助其他人解决同样的问题。

这个问题的当前答案是不正确的,因为 OP 正确使用了 mod_speling,但是有一个错误。

https://issues.apache.org/bugzilla/show_bug.cgi?id=44221

根本问题是 apache 人员在修复此行为方面存在分歧,因为它改变了模块的其余部分。这在大约 6 年的时间里一直没有得到解决。

于 2014-10-23T13:25:14.653 回答
10

要启用 mod_speling(通过 Location 或 VirtualHost),请使用指令:

CheckSpelling On

如果您想要的只是不区分大小写,请使用:

CheckCaseOnly On

您还需要启用 RewriteEngine:

RewriteEngine On
于 2011-09-29T21:15:53.543 回答
8

在使用 Apache 2.2 的 Ubuntu 12.04 LTS 上,我执行了以下操作:

  1. 创建speling.conf${APACHE}/mods-available提供配置选项。

    <IfModule mod_speling.c>
        CheckSpelling On
        CheckCaseOnly On
    </IfModule>
    
  2. 链接speling.confspeling.load进入启用的模块目录${APACHE}/mods-enabled

    # cd ../mods-enabled
    # ln -s ../mods-available/speling.conf speling.conf
    # ln -s ../mods-available/speling.load speling.load
    
  3. 重新启动服务器。

    # service restart apache2
    
于 2013-10-04T08:01:47.210 回答
1

在阅读了 user1647075 关于这是一个不太可能修复的已知 Apache 错误的回答后,我决定我最好的选择是通过更新我的 Apache 配置以显示 300 个状态代码的 404 错误页面来向用户隐藏“多个选项”页面:

ErrorDocument 300 /404.htm

当然,您也可以创建自定义错误页面,而不是重复使用 404 错误页面。

希望此解决方法有所帮助。

于 2018-09-14T18:03:44.160 回答
0

你真的想要不区分大小写的 URL 吗?
为什么不像这样强制使用小写网址?

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*) ${lc:$1} [R]

看看http://www.issociate.de/board/post/265865/make_URL

于 2011-05-27T16:36:31.017 回答