Направить запрос к Tomcat, только если файл не существует на диске
У меня есть Apache перед моей установкой Tomcat в качестве обратного прокси. Большинство URL-адресов направляются на Tomcat JkMount
Директива в Apache.
Для одного шаблона URL я бы хотел, чтобы Apache направлял запросы работнику Tomcat, только если в файловой системе не обнаружен статический ресурс.
Примерно так:
RewriteCond /var/www%{REQUEST_FILENAME} !-f
RewriteCond /var/www%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^/assets/.*$
RewriteRule ^/(.*)$ http://${tomcat-ssl}/$1 [P] # This syntax is wrong
Какой синтаксис я могу предоставить для RewriteRule
направить запрос в Tomcat?
1 ответ
Решение, которое я нашел, состояло в том, чтобы создать Alias
, который Apache рассматривает как синоним для заданного пути. Я создал RewriteRule
который переписывает URL к этому Alias
если файл существует. Поскольку Alias
не соответствует JkMount
, JkMount
не справиться с этим. Если файл не существует, RewriteCond
терпит неудачу, RewriteRule
не применяется, и запрос передается Tomcat.
Alias /localstaticassets /var/www/assets
RewriteCond /var/www/%{REQUEST_FILENAME} -f
RewriteRule ^/assets/(.*)$ /localstaticassets/$1 [QSA,PT]
JkMount /assets/* tomcat-ssl