.htaccess mod重写正则表达式与文件名不匹配

时间:2012-09-13 14:13:11

标签: .htaccess mod-rewrite

我正在使用以下.htaccess配置指令(将所有非文件名请求重定向到单个PHP文件):

RewriteEngine on
Options +FollowSymLinks
RewriteBase /

RewriteRule !(\.ttf|\.eot|\.woff|\.xpi|\.xml|\.txt|\.air|\.exe|\.zip|\.pdf|\.ico|\.gif|\.jpg|\.png|\.jpeg|\.js|\.swf|\.css|\.php|\.html)$ mod_rewrite_redirector.php [L]

如何使上述正则表达式不区分大小写?我已尝试[L,NC]或将(?i)置于开头。 NC选项不适用于所有Apache2安装(各种版本),(?i)无效。

如何制作匹配URL的正则表达式,其类似于扩展名在2到4个字符之间的文件名?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

RewriteRule !\.[a-zA-Z0-9]{2,4}$ mod_rewrite_redirector.php [L]

但是如果您想将请求重定向到服务器上不存在的文件,最好使用:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . mod_rewrite_redirector.php [L]