Ich möchte, dass alle Zugriffe von urlnumberone.com und urlnumbertwo.com auf einige bestimmte Seiten meiner Website umgeleitet werden.
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumberone\.com
RewriteRule ^$ /thepath/tomypage/goeshere/ [L]
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumbertwo\.com
RewriteRule ^$ /thesecond/pathgoeshere/ [L]
Im Moment führen beide URLs den Benutzer einfach zur Startseite meiner Website, anstatt zu den Seiten, die ich beabsichtigt habe. Was mache ich falsch? Falls es darauf ankommt, die Seite ist eine WordPress-Seite und die WordPress-Regeln befinden sich UNTER diesen Weiterleitungen, nicht darüber im Code.
Ich denke, es gibt zwei Probleme. Es gibt einen zusätzlichen Punkt in der RewriteCond
Zeilen, also bedeutet der Teil in Klammern derzeit “www(beliebiges-Zeichen)(Literal-Punkt)”, was den Abgleich der www-Version der Domain verhindern würde, die Sie abgleichen müssen – es sei denn, Sie versuchen, Domains wie abzugleichen www6.urlnumberone.com
und www3.urlnumberone.com
.
Also ich würde ersetzen:
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumberone\.com
Mit:
RewriteCond %{HTTP_REFERER} ^http://(www\.)?urlnumberone\.com
Als nächstes für die RewriteRule
Linie würde ich die ändern ^$
(Ersetzen einer leeren Zeichenfolge) mit .*
(Ersetzen des gesamten Pfads) und eine 302- oder 301-Umleitung verwenden. Da WordPress jede URL umschreibt, die keine vorhandene Datei oder kein Verzeichnis ist, ist es leicht, versehentlich Umleitungsschleifen zu erstellen, also sollte die Verwendung von 301 oder 302 helfen, dies zu verhindern. Also ich würde verwenden:
RewriteRule .* /thepath/tomypage/goeshere/ [R=302,L]
Es mag mod_rewrite-Assistenten geben, die eine bessere Antwort haben, aber diese Methode funktioniert meiner Erfahrung nach gut.