
Es gibt viele Informationen zum Umleiten einer ganzen Domain auf eine andere Domain, aber ich kann keine Antworten auf Fragen zum Umleiten einer Domain auf eine bestimmte Seite auf einer zweiten Domain finden. Folgendes habe ich eingerichtet:
<VirtualHost *:80>
ServerName www.domain2.org.uk
ServerAlias domain2.org.uk domain1.co.uk www.domain1.co.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
RewriteEngine On
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
</VirtualHost>
Dies leitet zwar weiter, aber nur auf die Standardseite für Domäne2. Wie kann ich das ändern, sodass es auf die spezielle Seite geht?
Antwort1
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
Dies tut bereits, was Sie benötigen und leitet weiteralleszu https://www.domain2.org.uk/specific-page/
- wie in derRewriteRule
Auswechslung. (Obwohl dieRewriteRule
Mustererfasst unnötigerweise einen Rückverweis.)
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
ABER (es sei denn, es handelt sich um einen Tippfehler in Ihrem Beispiel-Code-Schnipsel) die Bedingung (die prüft, ob der Host
Headernichtend with domain1.co.uk
) führt zu einer Umleitungsschleife ( domain2.org.uk
ist offensichtlichnicht domain1.co.uk
, die Bedingung ist also immer erfüllt). Und die folgenden RewriteRule
Weiterleitungenalles.
DerBedingungsmusterin dieser RewriteCond
Richtlinie muss geändert werden, und zwar entweder durch:
- Entfernen des
!
Präfixes (Negation). (Obwohl das Nachstellen$
bei einem FQDN, der mit einem Punkt endet, immer noch Probleme verursachen würde.) - ODER ändern Sie zu
!domain2\.org\.uk$
Aber... da Sie offensichtlich Zugriff auf die Serverkonfiguration haben und in einemvirtueller HostKontext: Sie sollten hierfür eigentlich nicht mod_rewrite verwenden. Sie sollten einen separaten virtuellen Host erstellen, einen für domain1
, den anderen für domain2
und stattdessen eine mod_alias-Direktive verwenden RedirectMatch
... weniger fehleranfällig, effizienter.
Zum Beispiel:
<VirtualHost *:80>
ServerName domain1.org.uk
ServerAlias www.domain1.org.uk
RedirectMatch 301 ^ https://www.domain2.org.uk/specific-page/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.org.uk
ServerAlias www.domain2.org.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
NB: Diese virtuellen Hosts sind nur für HTTP (Port 80), daher müssen Sie diese Weiterleitung natürlich für HTTPS (Port 443) wiederholen.