无操作 Apache mod_rewrite 规则
No-op Apache mod_rewrite rule
我有一个这样的 .htaccess
文件:
RewriteCond /question2answer/%{REQUEST_FILENAME} !-f
RewriteCond /question2answer/%{REQUEST_FILENAME} !-d
RewriteCond OTHER_CONDITION_1
RewriteRule RULE_1 [L]
RewriteCond /question2answer/%{REQUEST_FILENAME} !-f
RewriteCond /question2answer/%{REQUEST_FILENAME} !-d
RewriteCond OTHER_CONDITION_2
RewriteRule RULE_2 [L]
...
德摩根定律告诉我有更好的方法:
RewriteCond /question2answer/%{REQUEST_FILENAME} -f
RewriteRule NO-OP [L]
RewriteCond /question2answer/%{REQUEST_FILENAME} -d
RewriteRule NO-OP [L]
RewriteCond OTHER_CONDITION_1
RewriteRule RULE_1 [L]
RewriteCond OTHER_CONDITION_2
RewriteRule RULE_2 [L]
...
我可以在此处使用的禁止操作规则是什么?如果有很多,我看到的是对性能影响最小的那个。
NO_OP(无操作)规则可以是这样的:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
这意味着如果请求是针对文件的,或者如果请求是针对目录的,那么什么都不做(在目标 URI 中由 -
表示)。
我有一个这样的 .htaccess
文件:
RewriteCond /question2answer/%{REQUEST_FILENAME} !-f
RewriteCond /question2answer/%{REQUEST_FILENAME} !-d
RewriteCond OTHER_CONDITION_1
RewriteRule RULE_1 [L]
RewriteCond /question2answer/%{REQUEST_FILENAME} !-f
RewriteCond /question2answer/%{REQUEST_FILENAME} !-d
RewriteCond OTHER_CONDITION_2
RewriteRule RULE_2 [L]
...
德摩根定律告诉我有更好的方法:
RewriteCond /question2answer/%{REQUEST_FILENAME} -f
RewriteRule NO-OP [L]
RewriteCond /question2answer/%{REQUEST_FILENAME} -d
RewriteRule NO-OP [L]
RewriteCond OTHER_CONDITION_1
RewriteRule RULE_1 [L]
RewriteCond OTHER_CONDITION_2
RewriteRule RULE_2 [L]
...
我可以在此处使用的禁止操作规则是什么?如果有很多,我看到的是对性能影响最小的那个。
NO_OP(无操作)规则可以是这样的:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
这意味着如果请求是针对文件的,或者如果请求是针对目录的,那么什么都不做(在目标 URI 中由 -
表示)。