我在Tomcat 7服务器下运行了一个AngularJS应用程序,该应用程序位于~/tomcat/webapp/web/中。
我正在尝试配置服务器,以便刷新或以其他方式播放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文件中添加使用上下文,并在server.xml文件中打开crossContext:
还向index.html添加了一个基标记。
我很确定我只是不完全理解这个问题..。
发布于 2014-05-15 21:19:00
解决方案:
我误解了url重写的方式。我已经在~/tomcat/webapps/ROOT/WEB-INF下安装了重新编写器,而它确实需要位于应用程序文件夹:~/tomcat/webapps/web-client/WEB-INF下。
因此,现在server:8080/web-client/下的URL被正确地重定向了。
如果将来它能帮助其他人,这是我的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>https://stackoverflow.com/questions/23665573
复制相似问题