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

Bar*_*art 17 apache case-sensitive mod-speling

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

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

我正在使用Apache 2.2.16 Unix全新安装进行测试,但我仍遇到与2008年提交的问题完全相同的问题.

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

我有这个httpd.conf:

CheckSpelling on
CheckCaseOnly on
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

fij*_*ron 10

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

CheckSpelling On
Run Code Online (Sandbox Code Playgroud)

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

CheckCaseOnly On
Run Code Online (Sandbox Code Playgroud)

您还需要启用RewriteEngine:

RewriteEngine On
Run Code Online (Sandbox Code Playgroud)


小智 10

TLDR:CheckCaseOnly由于自2014年10月以来一直未发布六年以上的错误而被破坏.

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

这个问题的当前答案是不正确的,因为OP正确使用mod_speling,但是有一个bug.

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

根本问题是apache人在修复此行为方面存在分歧,因为它会更改模块的其余部分.对于像6年这样的事情,这仍然没有固定.


ice*_*ter 8

在使用Apache 2.2的Ubuntu 12.04 LTS上,我做了以下内容:

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

    <IfModule mod_speling.c>
        CheckSpelling On
        CheckCaseOnly On
    </IfModule>
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重启服务器.

    # service restart apache2
    
    Run Code Online (Sandbox Code Playgroud)


小智 0

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

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*) ${lc:$1} [R]
Run Code Online (Sandbox Code Playgroud)

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

  • 事实上,既然我已经尝试过了,这是完全错误的。甚至这里的 rewriteRule 实际上也是不正确的...... (3认同)