排除某些扩展名的url被redirect到索引页

我有一套重写规则,将所有不存在的页面redirect到我的网站的索引:

RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 

目前的规则基本上是将每个不是目录或文件的URLredirect到index.php,所以www.example.com/thispagedoesntexist以及www.example.com/missingfile.xml转到index.php页面。 如果该URL不存在于CMS中,则会触发404错误返回给用户。

.(js|css|ico|gif|jpg|png|xml|html|swf|ttf|eot)$被redirect,即使文件没有存在。

我仍然希望继续将不存在的页面指向index.php,但是如果URL以任何这些文件扩展名结束,则不会。

规则很简单:

 RewriteRule \.(js|css|ico|gif|jpg|png|xml|html|swf|ttf|eot)$ - [NC,L] 

只要把它放在正确的地方(按规则的顺序):例如, 这行之前RewriteRule ^.*$ index.php [NC,L]

PS这样的( ^.*$ )模式对于你的规则是没有必要的[NC]标志(它根本没有区别)。