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

Направить запрос на 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?

Решение, которое я нашел, заключалось в создании 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