
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:
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 funktioniertVerwenden 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]