^/$
Ich habe verschiedene reguläre Ausdrücke ( ,, ) ausprobiert, ^index.php$
um ^$
nur die Homepage einer WordPress-Website umzuschreiben/über zu proxyen .htaccess
. Der Vollständigkeit halber sei erwähnt, dass ich die entsprechenden Module geladen habe, um dies zu erreichen, und dies mit bestimmten regulären Ausdrücken für andere Pfade tun kann, aber nicht für die Homepage. Andere Antworten haben angegeben, dass es ^$
funktionieren ^/$
wird, aber bei mir funktioniert es nicht. Wie ist es möglich, gezielt nur die Homepage abzurufen?
RewriteEngine On
RewriteBase /
RewriteRule ^$ http://some-other-domain.com [P]
Das Endziel besteht darin, eine Seite einer anderen Website nur für die Homepage bereitzustellen. Vielleicht gibt es einen besseren Ansatz?
Antwort1
Versuchen Sie stattdessen etwas wie das Folgende am Anfang der .htaccess
Datei,Vorder WordPress Front-Controller:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ http://some-other-domain.com/ [P]
Die Direktiven RewriteBase
und RewriteEngine
sind hier nicht erforderlich. Das RewriteEngine
erscheint vermutlich bereits später in der Datei als Teil des # BEGIN WordPress
Codeblocks (die Reihenfolge ist nicht wichtig).
Beachten Sie den Schrägstrich amAuswechslungZeichenfolge. Dies ist eineerforderlichTeil der URL (Sie können keinen leeren URL-Pfad haben). Wenn Sie ihn hier weglassen, muss später etwas anderes das "reparieren". Im Falle einer externen Weiterleitung ist derBrowserwürde es „reparieren“, aber hier gibt es keinen „Browser“.
Dies entspricht sowohl einem leeren URL-Pfad als auch index.php
(falls mod_dir die Unteranfrage für den Verzeichnisindex ausgibt)Vormod_rewrite sendet die Anfrage über mod_proxy). DieZustanddas prüft, ob die REDIRECT_STATUS
Umgebungsvariable in diesem Fall notwendig ist, um Proxying zu vermeidenalles, da der WordPress-Front-Controller alles in umschreibt index.php
. Die Bedingung stellt sicher, dass nur direkte Anfragen abgeglichen werden, nicht umgeschriebene Anfragen.
Beiseite:ARewriteRule
Musterlike ^/$
wird in einem .htaccess
Kontext nie übereinstimmen. Dies würde nur funktionieren, wenn die Direktive in einemServer(odervirtueller Host) Kontext.