使用.htaccess使Apache中的文件夹不区分大小写

使用.htaccess使Apache中的文件夹不区分大小写,.htaccess,case-insensitive,.htaccess,Case Insensitive,我需要使访问服务器上的目录不区分大小写 如何使用htaccess实现这一点?您必须在apache中安装并启用mod_speling模块,并在.htaccess中将CheckCaseOnly指令设置为On CheckCaseOnly On 这是我使用的,因为我的主机是共享的,不包括mod_拼写模块,但支持.htaccess,但这只适用于一个文件夹: RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^student-government/$ http

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


如何使用htaccess实现这一点?

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

CheckCaseOnly On

这是我使用的,因为我的主机是共享的,不包括mod_拼写模块,但支持.htaccess,但这只适用于一个文件夹:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^student-government/$ http://www.tombarrasso.com/Student-Government/ [R=302,NC,L]
要重定向到的文件夹可以是任何大小写,因此您可以使用小写文件夹并重定向所有拼写变体


我想它可以用一点正则表达式来适应所有的文件夹,而不仅仅是一个文件夹。这在Apache2.2.14(Unix)上对我很有效。

如果您希望请求的URL在使用大写或小写字母时有效,请使用mod_speling使URL不区分大小写。在.htaccess文件中编写以下代码:

CheckSpelling On
<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>

解决方案-1:要针对请求的URL设置不区分大小写的目录和文件名,我们可以在应用程序的.htaccess文件中添加以下两行:

CheckSpelling On
<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>

#启用后,mod_speling会将拼写错误的请求重定向到任何最近的匹配资源。使用一点内存,但如果您一直在更改URI或有许多类似名称的URI,则可能会很有用:
拼写检查
只检查箱子
解决方案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>

重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写规则^my dir/old-dir-1/$/my dir/new-dir-1/[R=301,L,NE]
重写规则^my dir/old-dir-2/$/my dir/new-dir-2/[R=301,L,NE]
重写规则^my dir/old-dir-3/$/my dir/new-dir-3/[R=301,L,NE]
#对于任何不区分大小写的目录,我们可以尝试添加不区分大小写(NC)
重写规则^My Old Dir/$/My new Dir/[R=301,L,NC]

讽刺。AGENT074,默认情况下是否未启用mod_拼写?我有一个共享主机帐户,所以我没有权限更改Apache模块。@ycx:看起来它在默认情况下是禁用的。如果它在默认情况下被启用,那么它实际上被称为“mod_speling”,这取决于您的共享主机提供商,但不要这样认为,因为它会使服务器速度减慢一点。我无法启用mod_speling。我是否可以使用正则表达式逻辑?