Redirect 301 или RedirectMatch 301 у меня не работает

Redirect 301 или RedirectMatch 301 у меня не работает

Итак, вот мой сценарий:

У меня есть 1 статический IP и 2 сервера. 1 сервер - веб-сервер, другой - почтовый сервер. У меня есть маршрутизатор в качестве аппаратного брандмауэра со всеми установленными портами, требующими проброса на внутренние IP-адреса.

Если пользователь вводит URL-адресhttp://www.domain.comони видят этот веб-сайт. Если пользователь хочет получить доступ к веб-почте, он вводит URLhttp://mail.domain.comно все еще вижуhttp://www.domain.com

Я настроил домен веб-почты так, чтобы он был доступен через порт 8080 на почтовом сервере, и если пользователь вводит URL-адресhttp://mail.domain.com:8080это работает без проблем, но не сhttp://mail.domain.com.

Вот в чем моя проблема:

В моем httpd.conf я хочу настроить перенаправление 301, чтобы когда пользователь вводитhttp://mail.domain.comони перенаправляются наhttp://mail.domain.com:8080

Я бы предпочел не использовать .htaccess и сохранить директивы в httpd.conf

Спасибо...

решение1

Вам нужно будет создать виртуальный хост на вашем основном веб-сервере, который отвечает на веб-запросы для адреса "mail.domain.com". Взгляните наВиртуальный хост на основе именидокументация на сайте Apache. Вам также понадобится правило mod_rewrite для перенаправления. Ваша конфигурация будет выглядеть примерно так:

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName mail.domain.com
  RewriteEngine On
  RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L]
</VirtualHost>

решение2

Есть как минимум 2 способа сделать это:

  1. Создать 2виртуальный хостодин для www.domain.com и один для mail.domain.com, а затем поместите директиву RedirectMatch во второй.
    Вы также можете использоватьProxyPassдиректива в виртуальном хосте mail.domain.com, чтобы он работал как обратный прокси-сервер и mail.domaine.com:80 работал напрямую без перенаправления

  2. Используйте mod_rewrite таким образом, чтобы перенаправлять только для URL-адреса mail.domain.com с таким правилом

    RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
    RewriteRule ^(.*)http://mail.domain.com:8080/1 доллар [Р=301]

    с помощью mod_rewrite вы также можете создать обратный прокси-сервер с таким правилом (mail.domain.com должен разрешаться во внутренний IP)

    RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
    RewriteRule ^(.*)http://mail.domain.com:8080/$1 [П]

Связанный контент