2016-01-22 2 views
0

Я использую apache перед tomcat, поэтому я могу перенаправить запросы из домена на URL-адрес tomcat с помощью mod_proxy. Я столкнулся с проблемой на сервере, где при использовании субдомена он хочет вернуться в базовый домен. Есть ли способ перенаправить все запросы с example.com/foo на foo.example.com?Запрос на перенаправление Apache из домена + путь

<VirtualHost *:80> 
ServerName example.com/app 
ProxyPreserveHost Off 
ProxyPass/http://app.example.com:8080/AppName/ 
ProxyPassReverse/http://app.example.com:8080/AppName/ 
</VirtualHost> 

Приведенный выше пример не работает. Я предполагаю, что это потому, что я не могу включить путь в имя сервера.

Вот моя рабочая версия тега, основанная на принятом ответе.

<VirtualHost *:80> 
ServerName example.com/app 
ProxyPreserveHost Off 
ProxyPass/http://app.example.com:8080/AppName/ 
ProxyPassReverse/http://app.example.com:8080/AppName/ 

# Rewrite all request from example.com/foo to foo.example.com 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^/foo/?(.*) http://foo.example.com/$1 [R,L] 
</VirtualHost> 

ответ

0

Говоря строго с последним утверждением в вашем оригинальном посте, «Есть ли способ перенаправить все запросы из example.c om/foo to foo.example.com ".

Вы можете использовать переписывание, чтобы выполнить это. Например:

RewriteCond% {HTTP_HOST}^Пример \ .com $ [NC]
RewriteRule ^/Foo /?(.*) http://foo.example.com/ $ 1 [R, L]

Это предполагает, что ваш модуль перезаписи загружен и включен:

LoadModule rewrite_module модули/mod_rewrite.so
RewriteEngine На

+0

Я борюсь с тем, как использовать переписать, потому что это не сайт apache. Apache буквально просто сидит впереди и перенаправляет запросы на url приложения tomcat. – ryandlf

+0

Поцарапать это. Это сработало. Вместо включения перезаписи в .htaccess (потому что у меня ее нет) я просто включил его непосредственно в виртуальный хост. Я собираюсь включить рабочий тег virtualhost в исходное сообщение. – ryandlf

0

Вы можете использовать mod_rewrite в apache. Убедитесь, что он включен, поскольку корень:

a2enmod rewrite 

Это подтвердит, что оно включено или уже есть. Если он был включен, вам потребуется перезапуск Apache.

Затем в корневом каталоге вашего виртуального хоста создавать/редактировать .htaccess файл и добавьте строку:

Redirect /foo/ http://foo.example.com/ 

В зависимости от конкретных разрешений каталога может потребоваться разрешить переопределение для каталога

<Directory /your/path/here> 
    AllowOverride All 
</Directory> 

HTH

+0

Я на самом деле не имеют ничего живого внутри апача. Все, что я использую apache для, - это перенаправление на мое приложение tomcat. Будет ли это работать в этой ситуации? – ryandlf

+0

И сохранит ли это остальные части пути? example.com/foo/more к foo.example.com/more. – ryandlf

+0

Хм, возможно, нет, извините. Я уверен, что вы могли бы использовать Mod_rewrite для достижения своих целей, хотя, возможно, стоит прочитать этот пост, может помочь с вашей проблемой лучше? http://stackoverflow.com/questions/603765/how-do-redirect-from-apache-to-tomcat – Graeme

Смежные вопросы