我有一套重写规则,将所有不存在的页面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]
标志(它根本没有区别)。