Redirect 301 oder RedirectMatch 301 funktionieren bei mir nicht

Redirect 301 oder RedirectMatch 301 funktionieren bei mir nicht

Das ist also mein Szenario:

Ich habe 1 statische IP und 2 Server. 1 Server ist ein Webserver, der andere ein Mailserver. Ich habe einen Router als Hardware-Firewall, bei dem alle Ports so eingestellt sind, dass sie Passthrough zu internen IP-Adressen erfordern.

Wenn ein Benutzer die URL eingibthttp://www.domain.comsie sehen diese Website. Wenn der Benutzer auf Webmail zugreifen möchte, gibt er die URL einhttp://mail.domain.comaber immer noch sehenhttp://www.domain.com

Ich habe die Webmail-Domäne so eingestellt, dass sie über Port 8080 auf dem Mailserver erreichbar ist. Wenn der Benutzer die URL eingibthttp://mail.domain.com:8080es funktioniert kein Problem, aber nicht mithttp://mail.domain.com.

Das ist also mein Problem:

In meiner httpd.conf möchte ich eine Umleitung 301 einrichten, so dass der Benutzer, wenn erhttp://mail.domain.comSie werden weitergeleitet zuhttp://mail.domain.com:8080

Ich würde es vorziehen, .htaccess nicht zu verwenden und die Anweisungen in der httpd.conf zu belassen

Danke...

Antwort1

Sie müssen einen virtuellen Host auf Ihrem Haupt-Webserver erstellen, der auf Webanfragen für die Adresse "mail.domain.com" antwortet. Sehen Sie sich dieNamensbasierter virtueller HostDokumentation auf der Apache-Website. Sie benötigen außerdem eine mod_rewrite-Regel, um die Umleitung durchzuführen. Ihre Konfiguration würde ungefähr so ​​aussehen:

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

Antwort2

Es gibt mindestens zwei Möglichkeiten, dies zu tun:

  1. Erstellen Sie 2virtueller Hosteine für www.domain.com und eine für mail.domain.com und dann setzen Sie Ihre RedirectMatch-Direktive in die zweite.
    Sie können auch dieProxyPassDirektive im virtuellen Host mail.domain.com, damit dieser wie ein Reverse-Proxy funktioniert und mail.domaine.com:80 direkt und ohne Umleitung funktioniert

  2. Verwenden Sie mod_rewrite wie folgt, um nur für die URL mail.domain.com mit einer Regel wie dieser umzuleiten

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

    mit mod_rewrite können Sie auch einen Reverse-Proxy mit einer Regel wie (mail.domain.com sollte zur internen IP aufgelöst werden) erstellen.

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

verwandte Informationen