Html 在.htaccess文件中使用NC不起作用

Html 在.htaccess文件中使用NC不起作用,html,.htaccess,Html,.htaccess,我正在尝试创建一个.htaccess文件,该文件忽略了文件的大小写敏感度。到目前为止,我有以下几点: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html 当我准确地键入文件名时,这种方法会起作用。例如,我的一个文件是About.html。当我键入www.domain.com/About时,它会转到正确的

我正在尝试创建一个.htaccess文件,该文件忽略了文件的大小写敏感度。到目前为止,我有以下几点:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html
当我准确地键入文件名时,这种方法会起作用。例如,我的一个文件是About.html。当我键入www.domain.com/About时,它会转到正确的位置,但当我键入www.domain.com/About时,它不会

我看到过关于人们使用[NC]的帖子,但我也不能让它起作用。我也试过把

CaseInsensitive On

但这似乎破坏了一切(甚至无法加载主页),所以我去掉了那个部分。有人知道如何做到这一点吗?

不区分大小写不是这样工作的,它激活正则表达式匹配的不区分大小写,而不是文件

例如:

RewriteRule ^somefile.php$ /index.php
RewriteRule ^somefile.php$ /index2.php [NC]
如果有人试图访问
http://domain.com/SomeFile.php
,它将与第一行不匹配,但第二行将匹配,这将使他重定向到index2.php(而不是index.php)。但是如果您将index2.php文件命名为index2.php,则重定向将抛出404未找到错误

您正在寻找的是使用“重写地图”。您需要将其放入服务器配置文件中:

RewriteMap lc int:tolower 
重新启动apache,并在htacces中使用如下规则:

RewriteRule ^(.*)$ /${lc:$1} 
这会将任何请求转换为小写,然后您的文件必须全部小写


有关RewriteMap=>

大小写不敏感的更多信息不是这样工作的,它会激活正则表达式匹配的大小写不敏感,而不是文件

例如:

RewriteRule ^somefile.php$ /index.php
RewriteRule ^somefile.php$ /index2.php [NC]
如果有人试图访问
http://domain.com/SomeFile.php
,它将与第一行不匹配,但第二行将匹配,这将使他重定向到index2.php(而不是index.php)。但是如果您将index2.php文件命名为index2.php,则重定向将抛出404未找到错误

您正在寻找的是使用“重写地图”。您需要将其放入服务器配置文件中:

RewriteMap lc int:tolower 
重新启动apache,并在htacces中使用如下规则:

RewriteRule ^(.*)$ /${lc:$1} 
这会将任何请求转换为小写,然后您的文件必须全部小写


关于RewriteMap=>

不区分大小写不会神奇地将“about”变为“about”。不区分大小写不会神奇地将“about”变为“about”。按照您的建议执行时,我在每一页上都会看到一个内部服务错误。甚至在导航到确切的文件时。你在哪里添加了重写映射?在我上面的代码之后。我应该把它放在前面吗<代码>重写引擎打开
重写条件%{REQUEST_FILENAME}-d
RewriteCond%{REQUEST_FILENAME}\.html-f
RewriteRule^(.*)$$1.html
RewriteMap lc int:tolower
RewriteRule^(.*)$/${lc:$1}
正如我所说的,RewriteMap不在htacces中,它在apache condition文件中(这就是您得到内部服务器错误的原因),阅读文档了解更多关于在何处放置重写映射的信息当执行您建议的操作时,我会在每一页上看到一个内部服务错误。甚至在导航到确切的文件时。你在哪里添加了重写映射?在我上面的代码之后。我应该把它放在前面吗<代码>重写引擎打开
重写条件%{REQUEST_FILENAME}-d
RewriteCond%{REQUEST_FILENAME}\.html-f
RewriteRule^(.*)$$1.html
RewriteMap lc int:tolower
RewriteRule^(.*)$/${lc:$1}
正如我所说的,RewriteMap不在htacces中,它在apache condition文件中(这就是您得到内部服务器错误的原因),阅读文档了解地图放置位置的更多信息