将多个查询string与RewriteCond进行匹配

我在CGI脚本的Apacheconfiguration文件中有以下configuration:

RewriteEngine on RewriteCond %{QUERY_STRING} !^/var/log/syslog-ng/JBoss.*$ RewriteRule ^/cgi-bin/(.*)$ /secure-cgi-bin/$1 [R=301,L,QSA] 

这个想法是,如果有人使用CGI脚本来查看除/var/log/syslog-ng/JBoss之外的path,则应该通过安全的CGI脚本redirect它们。

现在我想改变RewriteCond以便在不通过安全CGI的情况下也可以查看第二条path。 第二个path是/var/log/syslog-ng/Tomcat

我如何去做这个改变?

你可以使用多行和[OR]标志,就像samarudge告诉你的那样,但是由于你只有稍微不同的path,所以提醒一下:ReWriteCond / Rule支持正则expression式,所以这样的格式也是可能的:

 RewriteCond %{QUERY_STRING} !^/var/log/syslog-ng/(JBoss|Tomcat).*$ 

你应该能够链接多个RewriteCond与[OR]标志

 RewriteEngine on RewriteCond %{QUERY_STRING} !^/var/log/syslog-ng/JBoss.*$ [OR] RewriteCond %{QUERY_STRING} !^/var/log/syslog-ng/Tomcat.*$ [OR] RewriteRule ^/cgi-bin/(.*)$ /secure-cgi-bin/$1 [R=301,L,QSA]