Проблемы перезаписи URL в Tomcat 8

Я переписал tomcat 8 на работу, но в rewrite.config, похоже, чего-то не хватает, что приводит к тому, что последнее условие не выполняется. Для пользы других у меня есть RewriteValve для работы с моим конкретным приложением, а не глобально. Что работает для меня, приведено ниже.

В файле контекста META-INF моего приложения я включил нижнюю строку

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" asyncSupported="true"/>

В WEB-INF моего приложения у меня есть файл rewrite.config, в котором говорится следующее после включения обратной связи, замеченной в другом потоке перезаписи tomcat 8, относительно проблемы с использованием {REQUEST_FILENAME}, равной нулю. Я не использовал REQUEST_FILENAME, и мой конфиг выглядит следующим образом.

RewriteCond %{REQUEST_URI} .*\.(css|js|html|png|jpg|jpeg|gif|txt|ico) [OR]
RewriteCond %{REQUEST_URI} ^\/api\/ [OR] 
RewriteRule ^(.*)$ - 

RewriteRule ^(.*)$ /index.html 

Теперь, если URI является js, css и т. Д., Или если URI начинается с / api / i, я вижу, что правило перезаписи оценивается, и никакая замена не выполняется. то есть ниже URL, кажется, работает нормально, и никакая замена не делается. localhost: 8080 / api / abc / xyz, localhost: 8080 / css / abc.min.css

Но по какой-то причине последнее правило вообще не применяется, даже если URI имеет действительное правило, которое может быть им затронуто. Например. URL вроде localhost: 8080 / def / ghi должен был быть перенаправлен на index.html, но, похоже, он не переписывается. Я не уверен, что мне не хватает в rewrite.config, вызывающих такое поведение. Я мог бы перейти к! условие, чтобы сделать переписать тоже, но просто хочу, чтобы мое понимание было ясно, когда я использую комбинацию Mulitple RewriteRule.

Любая помощь приветствуется.

Ответы на вопрос(2)

Ваш ответ на вопрос