为Apache2.2和JBoss4.2.3配置mod_rewrite和mod_jk

为Apache2.2和JBoss4.2.3配置mod_rewrite和mod_jk,apache,mod-rewrite,jboss,mod-jk,Apache,Mod Rewrite,Jboss,Mod Jk,我的问题如下:我的JBoss 4.2.3应用服务器在Windows下的一台主机上运行AJP 1.3连接器(对于我的测试环境是192.168.1.2),在另一台FreeBSD机器上运行Apache 2.2.14(192.168.1.10)。Apache充当所有请求的“前门”,并通过mod_jk将它们发送到JBoss。在我不得不做一些SEO优化之前,一切都很好。这些优化包括SEF URL,所以我决定在请求发送到JBoss之前使用Apache的mod_rewrite来更改请求。基本上,我需要实施两条规

我的问题如下:我的JBoss 4.2.3应用服务器在Windows下的一台主机上运行AJP 1.3连接器(对于我的测试环境是192.168.1.2),在另一台FreeBSD机器上运行Apache 2.2.14(192.168.1.10)。Apache充当所有请求的“前门”,并通过mod_jk将它们发送到JBoss。在我不得不做一些SEO优化之前,一切都很好。这些优化包括SEF URL,所以我决定在请求发送到JBoss之前使用Apache的mod_rewrite来更改请求。基本上,我需要实施两条规则:

  • 使用永久重定向将旧规则(如“”重定向到“”)
  • 将URL转发到“”,以便最终用户不会看到“丑陋”的URL(实际重写)
以下是测试虚拟主机的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>

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

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

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

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

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