RewriteCond 的不区分大小写的文件检查

Case-insensitive file check for RewriteCond

我有一个 .htaccess 文件,用于测试特定文件,运行如果存在 PHP 脚本,如果不存在则重定向到另一个网站。

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/directory/ -f
RewriteRule ^(.+\.png)$ process.php?file= [QSA]

RewriteRule ^(.+\.png)$ http://other.website.com/

我可以直接 运行 PHP 脚本并进行重定向,但这种方式更快。但是,我需要使 RewriteCond 检查不区分大小写。我已尝试设置所有标志并启用拼写检查,但无济于事。

RewriteEngine on
CheckSpelling on
RewriteCond %{DOCUMENT_ROOT}/directory/ -f [NC]
RewriteRule ^(.+\.png)$ process.php?file= [QSA,NC]

RewriteRule ^(.+\.png)$ http://other.website.com/

拼写模块在httpd.conf中启用,.htaccess文件可以修改所有可能的设置,但它仍然和以前一样工作,如果输入不同大小写文件名的文件则不会重定向。

尝试在 Apache 配置中使用 tolower 映射。首先,create a map 用于 httpd.conf 中的 tolower 调用(或 apache2.conf 或 VHost 配置):

RewriteMap lc int:tolower

接下来,在您的条件检查中,将 </code> 转换为小写:</p> <pre><code>RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/directory/${lc:} -f [NC] RewriteRule ^(.+\.png)$ process.php?file= [QSA,NC] RewriteRule ^(.+\.png)$ http://other.website.com/

请注意,要使上述方法正常工作,您的文件应始终使用小写字母。