Назад | Перейти на главную страницу

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

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

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

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

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

Итак, это моя проблема:

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

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

Спасибо...

Для этого есть как минимум 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 доллар США [R = 301]

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

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

Вам нужно будет создать виртуальный хост на вашем основном веб-сервере, который будет отвечать на веб-запросы для адреса «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>