Направить запрос к 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
Другие вопросы по тегам