我有一个在Tomcat 7服务器下运行的AngularJS应用程序,该应用程序位于〜/ tomcat / webapps / web-client /。
我尝试配置服务器,以便刷新或以其他方式使用URL重定向到
http://server:8080/web-client/index.html
。
使用Tuckey UrlRewrite,我在urlrewrite.xml中有这个:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<rule>
<from>/(.*)$</from>
<to type="redirect">/web-client/index.html</to>
</rule>
</urlrewrite>
这适用于任何类似的东西
server:8080/whatevergarbage
,
但不是
server:8080/web-client/moregarbage
。
我尝试在urlrewrite.xml文件中添加use-context,以及在server.xml文件中启用crossContext:
还为index.html添加了基本标记。
我很确定我完全不理解这个问题......
答案 0 :(得分:2)
解决方案:
我误解了网址重写的方式。我在~/tomcat/webapps/ROOT/WEB-INF
下安装了重写器,当它真的需要在应用程序文件夹下时:
~/tomcat/webapps/web-client/WEB-INF
。
因此,现在server:8080/web-client/
下的网址被正确重定向。
如果它将来帮助其他人,这是我的urlrewrite.xml文件:
<urlrewrite use-context="false">
<rule enabled="true">
<note>Do not process URL ending at index.html</note>
<from>/index.html$</from>
<to last="true">-</to>
</rule>
<rule enabled="true">
<note>Do not process URLs targeting assets</note>
<from>/assets/</from>
<to last="true">-</to>
</rule>
<rule enabled="true">
<note>Do not process calls to restservice</note>
<from>/restservice/</from>
<to last="true">-</to>
</rule>
<rule enabled="true">
<note>Do not process mocks</note>
<from>/mocks/</from>
<to last="true">-</to>
</rule>
<rule enabled="true">
<note>Process any URL without 'index', send to /web-client/index.html</note>
<from>^(?!index).*$</from>
<to type="redirect">%{context-path}/index.html</to>
</rule>
</urlrewrite>