Jboss + mod_rewrite =?

Jboss + mod_rewrite =?

我有 2 个服务器,Apache 和 Jboss。使用 JKmount 挂载 .war 文件并呈现一个复杂的站点。

例如:

JkMount /directory/* ajp13
Alias /directory /jboss/server/default/deploy/directory.war
<Directory  /jboss/server/default/deploy/directory.war>
  Order allow,deny
  allow from all
  Options -Indexes
</Directory>
<Directory  /jboss/server/default/deploy/directory.war/WEB-INF>
  deny from all
</Directory>

我想在 Apache 端使用 mod_rewrite 来改变 mod_jk 返回的 URL。

例如:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.1.1$
RewriteRule /.* http://server.example/redirect.html [R=301,L]

目前上述代码仅影响 Apache 返回的图像,而不影响 mod_jk 返回的页面。

这可能吗?如何做到的?

也有类似的问题被问到堆栈溢出然而,如果可能的话,我愿意在 Apache 内部处理这个问题,而不是改变 Jboss 配置。

该服务器是 OpenSuse 11.1,我怀疑可能存在一些模块优先顺序问题,但我无法确认这一点。

URL 示例如下:

http://site.example/directory/index.jsp
http://site.example/foo/other.html

在此示例中,第一个 URL 使用上面配置中列出的指令安装在 mod_jk 中,并且不会被 mod_rewrite 重写。第二个 URL 是 Apache 站点中的普通目录,并且被正确重写。

谢谢大家

答案1

经过长时间的搜索,我找到了这个问题的答案。

必须将重写指令全局放置在(虚拟)主机上,而不是放置在 .htaccess 中。Apache 似乎实际上不会解析这些文件,因为 mod_jk 提供的文件不属于该结构;如果您仔细想想,这是有道理的。但是,它将应用适用于整个主机的 mod_rewrite 规则。

答案2

抱歉,无法评论,我是新来的……您能给出一个 mod_jk 返回的示例 URL 吗?看起来正则表达式不适合返回的页面。

尝试全部重定向至http://server.example/redirect.html

RewriteRule .* http://server.example/redirect.html [R=301,L]

如果这有效,那么就是正则表达式给你带来了麻烦。

让我稍微解释一下。

你有一个如下的 URI: http://foo.bar.com/anything

您的正则表达式(/.*)现在正在搜索斜线后跟某个内容。但在 Uri 中,“任何内容”中没有 /。

如果你有图像:例如

http://foo.bar.com/images/image.png比在 images/image.png 中有一个 / 并且正则表达式匹配并执行重定向。

如果你想将某个站点重定向到另一个服务器:

http://foo.bar.com/somesite->http://bar.foo.com使用

RewriteRule somesite.* http://server.example/redirect.html [R=301,L]

答案3

抱歉,无法评论,但为了回应你的回答 Antitribu,你也可以将重写语句放在上下文中<Location>。有一个很好的Apache 手册中描述了何时使用 <File>、<Location>、.htaccess 等的部分

相关内容