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

时间:2010-08-10 14:29:51

标签: 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

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

我做错了什么?

4 个答案:

答案 0 :(得分:10)

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

CheckSpelling On

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

CheckCaseOnly On

您还需要启用RewriteEngine:

RewriteEngine On

答案 1 :(得分:9)

TLDR:CheckCaseOnly由于自2014年10月起六年来一直未发现的错误而中断。

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

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

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

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

答案 2 :(得分: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
    

答案 3 :(得分:1)

你真的想要不区分大小写的URL吗?
为什么不强迫小写网址,像这样呢?

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

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