java angularjs apache url-rewriting tomcat8

java - Tomcat 8 URL Rewrite



rewrite url tomcat (3)

¿Está implementado como una aplicación web java (WAR)? Puede implementar esto en su web.xml:

<servlet> <servlet-name>index</servlet-name> <jsp-file>/index.html</jsp-file> </servlet> <servlet-mapping> <servlet-name>index</servlet-name> <url-pattern>/</url-pattern> <url-pattern>/about</url-pattern> .. as many as you need .. <servlet-mapping>

Tengo una aplicación web AngularJS y backend de Jersey. Necesito configurar la reescritura de URL, por lo que todo, excepto las excepciones, se reescribirá en Angular''s index.html.

P.ej.:

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)

Configuré la válvula de reescritura de URL de Tomcat 8 de la siguiente manera:

en conf / 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>

en conf / 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 ignora mis configuraciones de reescritura, nada se reescribe, no hay error / excepción en el registro. ¿Qué estoy haciendo mal? Gracias por adelantado.

He intentado mover RewriteValve a config.xml en META-INF y volver a escribir config para WEB-INF, pero se comportó de la misma manera.


Encontré la solución, el problema estaba en el archivo rewrite.config incorrecto / defectuoso. Correcto debería ser:

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$ RewriteRule ^.*$ - [L] RewriteRule ^.*$ /index.html [L,QSA]

En la primera línea se enumeran los URI que no deben reescribirse. Todo lo demás se reescribirá en index.html.


No pude conseguir que esto funcione con REQUEST_URI, y no me gustó tener que incluir en la lista blanca archivos específicos de todos modos, así que lo resolví de una manera ligeramente diferente .