<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog "/private/var/log/apache2/rewrite.log"
RewriteLogLevel 3
RewriteCond %{REQUEST_URI} !^/etc$ [OR]
RewriteCond %{REQUEST_URI} !^/libs$ [OR]
RewriteCond %{REQUEST_URI} !^/bin$ [OR]
RewriteCond %{REQUEST_URI} !^/home$ [OR]
RewriteCond %{REQUEST_URI} !^/var$ [OR]
RewriteCond %{REQUEST_URI} !^/content$ [OR]
RewriteCond %{REQUEST_URI} !^/siteadmin$
RewriteRule ^/([^/]*)/([^/]*)/(.*)$ /content/wu/$2_$1/$3 [PT,L]
</IfModule>
答案1
使用 [OR] 与多个“非”(!) 模式意味着每个 URL 都将匹配一个 RewriteCond。
例子:
- “/foo” 匹配所有“RewriteCond”语句并将命中 RewriteRule。
- “/etc” 被第一条规则排除,但与所有其他规则匹配(/etc 不是 /libs),因此它也将符合 RewriteRule。
- /libs、/bin 以及您试图阻止请求的其余内容也是如此。
您可能打算使用默认的 AND 行为。您希望路径不是 /etc AND /libs AND /bin AND /home 等。