【问题标题】:Configuring mod_rewrite and mod_jk for Apache 2.2 and JBoss 4.2.3为 Apache 2.2 和 JBoss 4.2.3 配置 mod_rewrite 和 mod_jk
【发布时间】:2011-01-26 17:16:32
【问题描述】:

我的问题如下:我有 JBoss 4.2.3 应用服务器和 AJP 1.3 连接器在 Windows 下的一台主机上运行(我的测试环境为 192.168.1.2)和 Apache 2.2.14 在另一个 FreeBSD 机器上运行(192.168.1.10 )。 Apache 充当所有请求的“前门”,并通过 mod_jk 将它们发送到 JBoss。一切正常,直到我不得不做一些 SEO 优化。这些优化包括 SEF url,所以我决定使用 Apache 的 mod_rewrite 来更改请求,然后再将它们发送到 JBoss。基本上,我需要执行 2 条规则:

这是我用于测试虚拟主机的 Apache 配置:

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/www/dummy"
ServerName 192.168.1.10

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteRule /directory/(.*) /$1 [R=permanent,L]
    RewriteRule ^/([^/]+)/([0-9]+)/?$   /$1/view.htm?id=$2

</IfModule>

JkMount     /*      jsp-hostname

ErrorLog "/var/log/dummy-host.example.com-error_log"
CustomLog "/var/log/dummy-host.example.com-access_log" common
</VirtualHost>

问题是第二个重写规则不起作用。请求不变地传递给 JBoss,所以我收到 Tomcat 404 错误。但是,如果我将重定向标志添加到第二条规则中,例如

RewriteRule ^/([^/]+)/([0-9]+)/?$   /$1/view.htm?id=$2 [R,L]

它就像一个魅力。但是重定向不是我在这里需要的:)。我怀疑问题在于请求被转发到另一台主机(192.168.1.2),但我真的不知道如何让它工作。任何帮助将不胜感激:)

【问题讨论】:

    标签: apache mod-rewrite jboss mod-jk


    【解决方案1】:

    您的第二个重写规则不起作用的原因是您使用了“?”在您的 URI 定义中,并且 URI 定义从不包含分隔符“?”。 所以只需使用没有它的重写规则。例如。

    RewriteRule ^/([^/]+)/([0-9]+)/$   /$1/view.htm?id=$2 [R,L]
    

    【讨论】:

      【解决方案2】:

      简单地说,不起作用,因为第一个 RewriteRule 在末尾有 [L],这意味着要处理的最后一个规则。

      【讨论】:

        猜你喜欢
        • 2010-11-28
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多