kam*_*lot 13 java apache url-rewriting angularjs tomcat8
我有一个AngularJS webapp和Jersey后端.我需要设置URL重写,因此除了给定的异常之外的所有内容都将被重写为Angular的index.html.
例如.:
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)
Run Code Online (Sandbox Code Playgroud)
我已经设置了Tomcat 8 URL重写阀,如下所示:
在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>
Run Code Online (Sandbox Code Playgroud)
在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]
Run Code Online (Sandbox Code Playgroud)
Tomcat忽略了我的重写设置,没有重写,日志中没有错误/异常.我究竟做错了什么?提前致谢.
我试图将RewriteValve移动到META-INF中的config.xml并将配置重写为WEB-INF,但它的行为方式相同.
kam*_*lot 12
我找到了解决方案,问题在于错误/错误的rewrite.config文件.正确的应该是:
RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$
RewriteRule ^.*$ - [L]
RewriteRule ^.*$ /index.html [L,QSA]
Run Code Online (Sandbox Code Playgroud)
第一行是枚举的URI,不应该重写.其他所有内容都将重写为index.html.
这是否部署为 Java Web 应用程序 (WAR)?你可以在你的 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23063 次 |
| 最近记录: |