Apache mod_speling不区分大小写的URL问题

Apache mod_speling不区分大小写的URL问题,apache,case-sensitive,mod-speling,Apache,Case Sensitive,Mod Speling,我希望使用Apache的mod_speling模块创建不区分大小写的URL,但这会产生不需要的“多选项”列表,而Apache文档中说 设置后,此指令将拼写更正的操作限制为大写/小写更改。未执行其他潜在修正 我正在Apache2.2.16 Unix新安装上测试此功能,但仍然遇到与2008年提交的问题完全相同的问题 当checkCaseOnly指令打开时,Apache列出一些“多项选择”(状态代码300)时,这是一种意外的(而不是想要的)行为 我在我的httpd.conf中有这个: CheckSpe

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

设置后,此指令将拼写更正的操作限制为大写/小写更改。未执行其他潜在修正

我正在Apache2.2.16 Unix新安装上测试此功能,但仍然遇到与2008年提交的问题完全相同的问题

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

我在我的
httpd.conf
中有这个:

CheckSpelling on
CheckCaseOnly on
第一个指令用于使用
mod_speling
,第二个指令仅限于案例更正


我做错了什么?

您真的想要不区分大小写的URL吗
为什么不像这样强制使用小写URL呢

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

要启用mod_speling(按位置或虚拟主机),请使用以下指令:

CheckSpelling On
如果您只想不区分大小写,请使用:

CheckCaseOnly On

您还需要启用重写引擎:

RewriteEngine On

在使用Apache 2.2的Ubuntu12.04 LTS上,我执行了以下操作:

  • ${APACHE}/mods available
    中创建
    speling.conf
    ,以提供配置选项

    <IfModule mod_speling.c>
        CheckSpelling On
        CheckCaseOnly On
    </IfModule>
    
  • 重新启动服务器

    # service restart apache2
    

  • TLDR:CheckCaseOnly由于截至2014年10月的六年多未修复的错误而被破坏

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

    当前对此问题的回答是不正确的,因为OP正确地使用了mod_speling,但存在一个bug


    根本的问题是,apache人员在修复此行为方面存在分歧,因为它改变了模块的其余部分。这已经有6年左右没有解决了

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

    ErrorDocument 300 /404.htm
    
    当然,您也可以创建自定义错误页,而不是重用404错误页


    希望这一解决办法能有所帮助。

    事实上,我已经尝试过了,这一切都是错误的。甚至重写规则在这里实际上也是不正确的……具有讽刺意味的是,这是相同的,尽管在页面顶部有一条警告说,“请注意,这些示例中的许多都无法保持不变……”。这里的情况当然就是这样——它是不完整的。(或“错误”,取决于您如何看待它。)如果不检查请求的URL是否包含大写字母,则此指令将导致重定向循环。还应注意,
    RewriteMap
    指令只能在服务器配置(服务器或虚拟主机上下文)中定义,例如,not
    .htaccess
    。你解决过这个问题吗?我遇到了同样的问题。更新日期为2020年2月25日-上面用户1647075提到的Apache错误仍然没有修复。使用mod_speling模块时,您仍将面临多选300错误。“您还需要启用RewriteEngine”-是否有相关参考?顺便说一句,mod_speling和mod_rewrite之间从来没有依赖关系,简单地启用重写引擎在我看来没有什么意义?(尽管,正如其他答案和问题中所指出的,启用mod_speling并不是这里的问题。)OP在他们将问题发布到这里时,实际上为同一个bug报告做出了贡献(事实上,这个问题部分是他们bugzilla帖子的逐字副本)-不确定为什么当时没有提到这个问题?
    ErrorDocument 300 /404.htm