使用.htaccess使Apache Case中的文件夹不敏感

时间:2010-01-07 16:20:11

标签: .htaccess case-insensitive

我需要在我的服务器上访问目录不区分大小写。

如何使用htaccess做到这一点?

4 个答案:

答案 0 :(得分:3)

您必须在apache中安装并启用mod_speling模块,并在.htaccess中将CheckCaseOnly指令设置为On

CheckCaseOnly On

答案 1 :(得分:2)

如果您希望请求的URL无效(无论是使用大写还是小写字母),请使用mod_speling使URL不区分大小写。在.htaccess文件中写下以下代码:

CheckSpelling On

答案 2 :(得分:1)

这是我使用的,因为我的托管是共享的,不包含mod_spelling模块但支持.htaccess,但这仅适用于一个文件夹:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^student-government/$ http://www.tombarrasso.com/Student-Government/ [R=302,NC,L]

要重定向到的文件夹可以是任何大小写,因此您可以使用小写文件夹并重定向拼写的所有变体。

我认为可以使用一点REGEX来适应所有文件夹,而不仅仅是一个。这适用于Apache 2.2.14(Unix)。

答案 3 :(得分:0)

解决方案 1:要使与请求的 URL 相关的目录和文件名不区分大小写,我们可以将以下两行添加到应用程序的 .htaccess 文件中:

<IfModule mod_speling.c>
    #Once enabled, mod_speling redirects misspelled requests to any nearest matching resources. Uses a bit of memory, but can be useful if you've been changing URIs or have lots of similarly named URIs:
    CheckSpelling On
    CheckCaseOnly on
</IfModule>

解决方案 2: 同样,如果我们只想将几个预定义的目录转到特定目录,请改为应用以下几行:

<IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^my-dir/old-dir-1/$ /my-dir/new-dir-1/ [R=301,L,NE]
    RewriteRule ^my-dir/old-dir-2/$ /my-dir/new-dir-2/ [R=301,L,NE]
    RewriteRule ^my-dir/old-dir-3/$ /my-dir/new-dir-3/ [R=301,L,NE]

    # For any case insensitive directories we can try adding NO-CASE (NC)
    RewriteRule ^My-Old-Dir/$ /my-new-dir/ [R=301,L,NC]
</IfModule>