Назад | Перейти на главную страницу

Соответствие более чем одной строки запроса с помощью RewriteCond

У меня есть следующая конфигурация в файле конфигурации Apache для сценария CGI:

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, вместо этого они должны быть перенаправлены через защищенный сценарий CGI.

Теперь я хотел бы изменить RewriteCond так что второй путь также может быть просмотрен без прохождения защищенного CGI. Этот второй путь /var/log/syslog-ng/Tomcat.

Как мне сделать это изменение?

Вы можете использовать несколько строк и флаг [OR], как сказал вам самарудж, но, поскольку у вас есть только немного разные пути, напоминание: ReWriteCond / Rule поддерживает регулярные выражения, поэтому такой формат также возможен:

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]