Apache Rewrite 排除某个子目录
在做一个网站的时候,使用了apache Rewrite对URL进行重写,但意外发现了一个问题:Ueditor的一些插件,后缀是.html,本不该被重写,结果导致功能异常。虽然有可能可以通过编写更精确的Rewrite规则来避免这个问题,但直接排除后台管理目录的重写显然更容易实现。所以,找到导致插件重写错误的 RewriteRule,在上面添加 RewriteCond,如下:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*)$
#省略...
#下面这条给紧接着的RewriteRule筛选条件,类似if的功能
RewriteCond %{REQUEST_URI} !^/(admin|admin/.*)$
#下面这条导致了上面描述的问题
RewriteRule ^(.*)/([a-z0-9]{1,}).html$ $1/index.php?act=$2
#省略...
如此,所有 admin
子目录的访问都不会被重写。