java - 如何通过 mod_rewrite 将请求传递给 mod_jk 并剥离应用程序上下文,让 tomcat 5.5 在 apache 2 后面运行?

标签 java apache tomcat mod-rewrite mod-jk

好的,所以我想让一个在 tomcat (5.5) 中运行的 Web 应用程序在 apache 2(准确地说是 2.2.3)后面运行,从站点的根目录(即没有上下文)提供服务,并提供静态内容通过 apache。

因此,如果应用程序在 tomcat 上的“/myapp”下运行,我想使用 apache(加上 mod_rewrite)使其表现得就像在“/"代替。

Mod_jk 已设置并且工作正常。我可以从“/myapp”访问该应用程序,但我无法完全正常工作。下面是我为 mod_rewrite 准备的配置,用于尝试让它正常工作。它正确地重写了 /static/ url 以让 apache 从解压的 webapp 为它们提供服务,如果我启用重写日志,我看到它确实尝试将所有其他请求传递给 /myapp 通过 mod_jk。然而,mod_jk 之后似乎没有处理请求。


JkMount /myapp/*      worker1

RewriteEngine On

# ensure static stuff gets served by apache
RewriteRule ^/static/(.*)$ /var/lib/tomcat5.5/webapps/myapp/static/$1 [L]
# everything else should go through tomcat
RewriteRule ^/(.*)$ /myapp/$1 [L,PT]

过去,当我使用 apache 1 完成此操作时,我必须确保 mod_jkmod_rewrite 之前加载,但我似乎无法实现这在 apache 2 下。有什么想法吗?其他人通常怎么做?

最佳答案

最终设法使它正常工作。看来我需要将 JkOption 设置为:


JkOptions     +ForwardURICompat

然后 mod_jk 查看重写的 URL。必须承认不能 100% 确定为什么会这样,但我相信它正在恢复到旧的行为形式。如果有人能告诉我更好/更正确的方法,我很想知道。

关于java - 如何通过 mod_rewrite 将请求传递给 mod_jk 并剥离应用程序上下文,让 tomcat 5.5 在 apache 2 后面运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/208261/

相关文章:

apache - 将 IIS 网站重定向到 Apache 网站

java - 修改android首次安装时间

java - 如何从json中提取所有变量名称?

java - 具有相同字符串值的两个不同变量引用相同的内存地址

java - 重新使用变量名来引用。循环中的对象...跳出循环...我的对象在哪里?

python - 在同一个 apache 服务器上运行 django 和 flask

php - htaccess 将带有查询字符串的域重定向到带有排除的子域

更改tomcat ajp端口时的java/lang/UnsupportedClassVersionError

linux - httpd-2.4.10 从 "Regex could not be compiled"开始失败

session - 如何在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名