Apache mod_rewrite:RewriteRule 传递请求 tomcat 应用程序

Apache mod_rewrite:RewriteRule 传递请求 tomcat 应用程序

我在定义正确的 RewriteRule 以将请求转发到在 tomcat 中运行的应用程序时遇到了困难。我有一个启用了 mod_rewrite 的 apache 以及一个安装了 mod_jk 的应用程序的 tomcat 设置。如果没有虚拟主机,我可以毫无问题地浏览以下网址。(上下文是在 tomcat 中运行的应用程序)

http://www.domain.com/context

如何配置 RewriteRule 以将请求从 domain.com 传递到在 tomcat 中运行的应用程序。

http://www.domain.com --> http://www.domain.com/context

以下是我当前的虚拟主机文件

<VirtualHost *:80>
        ServerName www.domain.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
                RewriteEngine On
                RewriteRule \/$ /context [L]
        </Directory>

        <Directory /var/www/html/context/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny                                         
                allow from all                                           
        </Directory>

</VirtualHost>

这会将请求从 传递到名为domain.com的目录。如何覆盖默认的 apache 设置以将请求传递给在 tomcat 中运行的应用程序?context/var/www/html

在此先感谢您的帮助。

答案1

像这样,localhost:8080 是您的 tomcat 服务器运行的地方。

RewriteRule ^/(.*)$ http://localhost:8080/context/$1 [L,P]

答案2

我编辑了虚拟主机文件。我在虚拟主机文件中添加了 JkMount 而不是 000-default.conf,并能够让 apache 将请求传递给 tomcat 应用程序而不是 apaches web 目录中的文件夹。我现在还有 2 个虚拟主机文件,一个用于主域,另一个用于没有 www. 前缀的域。它们如下所示:

www_域名配置文件

<VirtualHost *:80>

        ServerName www.domain.com

        JkMount /context* ajp13_worker

        <Directory />
                Options FollowSymLinks
                AllowOverride None
                RewriteEngine On
                RewriteRule \/$ /context [L]
        </Directory>

</VirtualHost>

域名配置文件

<VirtualHost *:80>
        ServerName domain.com

        RewriteEngine On
        RewriteRule \/$ http://www.domain.com [L] 
</VirtualHost>

相关内容