Если Вы хотели бы, говорят, вещи под путем http://localhost/static/*, который будет подан от Apache, то можно установить RewriteCond перед правилом получить все, что не имеет URI как / статичным /* и передает на Tomcat через AJP, по существу уезжая / статичный /* один, чтобы быть поданным из DocRoot или Псевдонима, и т.д.
Например:
RewriteCond %{REQUEST_URI} !\/static\/.* [NC]
RewriteRule ^(.*) ajp://localhost:8009$1 [P,L]
Моим решением было бы использовать для этого условия. Сопоставляя условия с {QUERY_STRING}
, вы можете использовать обратные ссылки, чтобы использовать их в URL перенаправления.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="true">
<add input="{QUERY_STRING}" pattern="&?(beta=[^&]+)&?" />
<add input="{QUERY_STRING}" pattern="&?(gamma=[^&]+)&?" />
<add input="{REQUEST_URI}" pattern="^/redirect" negate="true" />
</conditions>
<action type="Redirect" url="/redirect?{C:1}&{C:2}" appendQueryString="false" redirectType="Found" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Единственная возможная проблема с этим решением может быть (в зависимости от того, что вы хотите) заключается в том, что перенаправление произойдет только в том случае, если в строке запроса присутствуют переменные строки запроса beta
и gamma
. В противном случае перенаправление не произойдет.
Правило перенаправления соответствует любому URL-адресу ( (. *)
). При необходимости вы можете это изменить. Я также добавил дополнительное условие, чтобы правило не совпадало с самим URL-адресом перенаправления, которое в противном случае привело бы к перенаправлению самого URL-адреса перенаправления.