java - Apache 服务器 RewriteRule 到 Tomcat war - 从 url 中删除应用程序名称

标签 java apache tomcat url-rewriting

我在使用 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/

相关文章:

java - 在 Groovy 脚本中监听 CTRL+C

apache - ColdFusion 11 REST 返回 404

java - 内存不足错误 : PermGen Space -- Jasper Report with Spring running on Tomcat

linux - apache 无法读取文档根目录中的 755 文件夹

apache - 通过代理的 apache 运行 OpenRDF Sesame

java - 在 apache tomcat 问题 : no permission for reading/writing a file 上部署一个 war 文件

java - 在异常 : Cannot find operation isServiced 的 tomcat 中部署

java - Hive UDF 在 select 中抛出 Class Not Found 异常

java - 将 "any"类类型传递到 java 方法中

java - 导出 JAR 文件但需要 MySQL 驱动程序