Leiten Sie die gesamte Domäne auf eine einzelne Seite einer anderen Domäne im Apache Virtual Host um.

Leiten Sie die gesamte Domäne auf eine einzelne Seite einer anderen Domäne im Apache Virtual Host um.

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 HostHeadernichtend with domain1.co.uk) führt zu einer Umleitungsschleife ( domain2.org.ukist offensichtlichnicht domain1.co.uk, die Bedingung ist also immer erfüllt). Und die folgenden RewriteRuleWeiterleitungenalles.

DerBedingungsmusterin dieser RewriteCondRichtlinie 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 domain2und 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.

verwandte Informationen