Nur Homepage des Apache-Rewrite-Proxys

Nur Homepage des Apache-Rewrite-Proxys

^/$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 .htaccessDatei,Vorder WordPress Front-Controller:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ http://some-other-domain.com/ [P]

Die Direktiven RewriteBaseund RewriteEnginesind hier nicht erforderlich. Das RewriteEngineerscheint vermutlich bereits später in der Datei als Teil des # BEGIN WordPressCodeblocks (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_STATUSUmgebungsvariable 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 .htaccessKontext nie übereinstimmen. Dies würde nur funktionieren, wenn die Direktive in einemServer(odervirtueller Host) Kontext.

verwandte Informationen