如何从一个端口redirect到另一个?

我有一个域,我在不同的端口上运行两个不同的Web应用程序。

  • 一个Java web应用程序的例子:8888 / foo
  • 例如一个PHP网站:8080 / bar

要求是,如果用户试图访问例如:8888或example:8080的根,那么用户应该被redirect到例如:8888 / foo。

我怎样才能达到这个要求?

您可以通过添加冒号将端口添加到redirect(或任何URL)中,并且可以使用RewriteRule中的正则expression式来匹配网站的根目录。

RewriteRule ^/$ http://example.com:8888/foo [R] 

在.htaccess文件中没有引导斜线,所以这会更合适:

 RewriteRule ^$ http://example.com:8888/foo [R] 

我会把JAVA应用程序与mod_proxy或mod_proxy_ajp一起。 后面的情况a。)这是一个tomcat(兼容的应用程序服务器)和b)你可以访问应用程序服务器的configuration。

 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(Tomcatnetworking服务器)并将其设置为通过AJP进行服务。