我在定义正确的 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>