3

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

我如何使用 htaccess 做到这一点?

4

4 回答 4

3

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

CheckCaseOnly On
于 2010-01-07T16:25:20.677 回答
2

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

CheckSpelling On
于 2013-08-31T10:25:42.913 回答
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) 上对我有用。

于 2010-06-04T02:10:50.097 回答
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>
于 2021-04-17T09:08:38.083 回答