我有一个域,在该域上的不同端口上运行两个不同的 Web 应用程序。
- example:8888/foo 上的 Java Web 应用程序
- 例如:8080/bar 上的 PHP 网站
要求是,如果用户尝试访问 example:8888 或 example:8080 的根,则应将用户重定向到 example:8888/foo。
我怎样才能实现这个要求?
答案1
您可以通过添加冒号在重定向(或任何 URL)中添加端口,并且可以通过在 RewriteRule 中使用正则表达式来匹配站点的根。
RewriteRule ^/$ http://example.com:8888/foo [R]
在 .htaccess 文件中没有前导斜杠,因此这样更合适:
RewriteRule ^$ http://example.com:8888/foo [R]
答案2
我会将 JAVA 应用程序与 mod_proxy 或 mod_proxy_ajp 一起使用。后者适用于以下情况:a.) 这是一个 tomcat(兼容应用程序服务器)并且 b.) 您有权访问应用程序服务器的配置。
NameVirtualHost *:8888
Listen 8888
<VirtualHost *>
ServerName example
ServerAdmin [email protected]
<Location />
<IfModule mod_proxy.c>
ProxyPass http://example:8888/foo
ProxyPassReverse http://example:8888/foo
</IfModule>
</Location>
...
</VirtualHost>
您必须注意,您的服务器 (Apache) 不会中继代理请求。大多数发行版都默认设置了此安全设置,但请仔细检查。Apache 文档是您的好朋友:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
端口 8080 则不同,因为它由您的应用服务器本身提供服务。如果您希望它也由 Apache 处理,则应停用 Catalina(Tomcat Web 服务器)并将其设置为通过 AJP 提供服务。