У меня есть веб-сайт AngularJS и Джерси. Мне нужно настроить переписывание URL-адресов, поэтому все, кроме заданных исключений, будет переписано в index.html Angular.Tomcat 8 URL Rewrite
Например .:
http://my.domain.com/about will be rewritten
http://my.domain.com/photos/photo1.jpg will NOT be rewritten (file photo 1 exists)
http://my.domain.com/rest/myservice will be NOT be rewritten (it is a call to REST service)
Я настроить Tomcat 8 URL Rewrite клапан следующим образом:
в конф/server.xml
<Host name="my.domain.com" appBase="webapps/MyDomainServer" unpackWARs="true"
autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
<!-- access logging, aliases,...-->
</Host>
в конф/Catalina/my.domain.com/rewrite.config
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} ^/rest.*
RewriteRule^- [L]
RewriteRule^index.html [L]
Tomcat игнорирует мои настройки перезаписи, ничего не переписывается, в журнале нет ошибки/исключения. Что я делаю не так? Заранее спасибо.
Я попытался переместить RewriteValve в config.xml в META-INF и переписать config на WEB-INF, но он поступил так же.
Но почему это было ошибкой? У меня такая же проблема. % {REQUEST_FILENAME} всегда NULL ... –
... и SCRIPT_FILENAME правильный, но RewriteCond% {SCRIPT_FILENAME} -f жалуется на отсутствие ведущего/ресурса. Это система Windows. Таким образом, путь: C: \ ... без ведущего/ –
В нашем случае мы использовали {REQUEST_URI} вместо (REQUEST_FILENAME}. Мы не могли полностью отказаться от правил, потому что нам не удалось загрузить локальные ресурсы в приложение, но заменяя! -f и! -d на использование REQUEST_URI, похоже, работает, по крайней мере на данный момент. –