我在使用 RewriteRule 时遇到问题。我的 tomcat 应用程序是 Xyz,它位于本地主机上的文件夹中。服务器名称是 www.mydomain.com。可以通过 www.mydomain.com/Xyz 访问应用程序,但我想通过 www.mydomain.com 访问它。是否可以通过 RewriteRule 实现这一点?
我在 Apache 配置文件中使用 JkMount:
JkMount /Xyz worker1
JkMount /Xyz/* worker1
其中 worker1 是 worker 的成员,定义为:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.lbfactor=1
我试图在 JkMount 之前添加到 Apache 配置文件 RewriteRule:
ServerName www.mydomain.com
RewriteEngine on
RewriteRule ^/(.+)$ /Xyz/$1 [L,PT]
但没有成功。可以通过 www.mydomain.com/Xyz 轻松访问应用程序,但 www.mydomain.com 根本不起作用。它只是产生错误信息...
有什么建议吗?
最佳答案
如果您愿意不使用 URL 重写,您可以通过定义 ROOT 上下文来实现类似的效果。
详细的 Tomcat 上下文文档 here
[ 注意:没试过,稍后会试] 我建议您将移动应用程序移动到/webapps 之外的目录,例如。/我的应用程序/xyz/;然后添加一个文件来定义您的应用程序上下文(对于 Tomcat 7)
$CATALINA_HOME$/conf/Catalina/localhost/ROOT.xml
对于以前的 Tomcat 版本可能是这样的:
$CATALINA_HOME$/conf/ROOT.xml
在 ROOT.xml 中定义您的应用程序根 (docBase) 所在的位置,并将路径元素留空
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Context deployOnStartup="true" docBase="/myapps/xyz/" path="" reloadable="false">
<Manager pathname=""/>
</Context>
类似的帖子在这里
再见
关于java - Apache 服务器 RewriteRule 到 Tomcat war - 从 url 中删除应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234840/