У меня есть домен, в котором я запускаю два разных веб-приложения на разных портах.
Требование состоит в том, что если пользователь пытается получить доступ к корневому каталогу example: 8888 или example: 8080, он должен быть перенаправлен на example: 8888 / foo.
Как я могу выполнить это требование?
Вы можете добавить порт в перенаправление (или в любой URL-адрес), добавив двоеточие, и вы можете сопоставить корень сайта, используя регулярные выражения в RewriteRule.
RewriteRule ^/$ http://example.com:8888/foo [R]
Внутри файла .htaccess нет начальных слэшей, поэтому было бы более уместно:
RewriteRule ^$ http://example.com:8888/foo [R]
Я бы поставил приложение JAVA с помощью mod_proxy или mod_proxy_ajp. Позднее в случае а.) Это tomcat (совместимый сервер приложений) и б.) У вас есть доступ к конфигурации сервера приложений.
NameVirtualHost *:8888
Listen 8888
<VirtualHost *>
ServerName example
ServerAdmin you@the.re
<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) и настроить его для обслуживания через AJP.