Verhindern Sie, dass das Administratorverzeichnis mithilfe von Regeln zum Umschreiben von URLs umgeleitet wird
Das folgende Setup funktioniert sehr gut, aber wenn ich versuche, dorthin zu gelangen https://example.com/quotes/wp-admin
, leite ich weiter, https://example.com/wp-admin
was nicht das ist, was ich tun möchte, da ich mich jetzt nie auf der /quotes/
WordPress-Website anmelden kann .
Ich habe versucht, dies zu den Anführungszeichen hinzuzufügen, .htaccess
aber es hilft nicht:
RewriteCond %{REQUEST_URI} !^/(wp-admin/.*)$
Ich habe auch versucht, die folgende Zeile zu einer .htaccess
Datei im wp-admin
Ordner hinzuzufügen, aber es hat auch nicht funktioniert.
RewriteEngine Off
Stammdatei .htaccess
:
# Rewrite any URLs that contain a language code prefix to the subdirectory
RewriteRule ^[a-z]{2}/ quotes%{REQUEST_URI} [L]
# Rewrite any request for a static resource that does not exist (in the root)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(css|js|png|jpg|webp|gif|svg|ttf|woff2)$ quotes%{REQUEST_URI} [L]
# BEGIN rlrssslReallySimpleSSL rsssl_version[3.3.5]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
/quotes
.htaccess
Datei
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for static resources
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|webp|gif|svg|ttf|woff)$ RewriteRule (.*) /$1 [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /quotes/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /quotes/index.php [L]
</IfModule>
# END WordPress
Antworten
Ich habe versucht, dies zu den Anführungszeichen hinzuzufügen,
.htaccess
aber es hilft nicht:RewriteCond %{REQUEST_URI} !^/(wp-admin/.*)$
Die REQUEST_URI
Servervariable enthält den vollständigen URL-Pfad, daher sollte dies sein /quotes/wp-admin
(dh Regex !^/quotes/wp-admin
- ablaufender Schrägstrich absichtlich weggelassen). Folglich würde die obige Ausnahme fehlschlagen und die Umleitung würde immer noch auftreten.
Sie können auch .php
die Liste der zu vermeidenden Erweiterungen ergänzen . Oder schließen Sie sogar Anfragen aus, die einfach so aussehen, als hätten sie eine Dateierweiterung - vorausgesetzt, Ihre Seiten-URLs haben keine "Dateierweiterungen".
Zum Beispiel in /quotes/.htaccess
:
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for wp-admin and static resources
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !^/quotes/wp-admin
RewriteCond %{REQUEST_URI} !\.\w{2,4}$ RewriteRule (.*) /$1 [R=302,L]
\.\w{2,4}$
- Dies setzt voraus , dass Dateiendung eines Punkt bestehen , gefolgt von zwischen 2 und 4 Zeichen im Bereich von a-z
, A-Z
, 0-9
oder _
(Unterstrich) und das Ende des URL-Pfades. \w
ist eine Kurzzeichenklasse, die diesen Zeichenbereich darstellt.
Sie können auch noch einen Schritt weiter gehen und verhindern, dass Anforderungen, die einer physischen Datei zugeordnet sind, umgeleitet werden, obwohl die oben genannten Ausnahmen für !^/quotes/wp-admin/
und !\.\w{2,4}$
bereits alles abfangen sollten . Zum Beispiel:
# Redirect any direct requests for "/quotes/<anything>" back to root
# Except for wp-admin, static resources and any other files
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_URI} !^/quotes/wp-admin RewriteCond %{REQUEST_URI} !\.\w{2,4}$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /$1 [R=302,L]
Dateisystemprüfungen (wie z. B. -f
) sind relativ "teuer" und sollten daher vermieden werden, wenn dies nicht unbedingt erforderlich ist.
Ich habe auch versucht, die folgende Zeile zu einer .htaccess-Datei im Ordner wp-admin hinzuzufügen, aber es hat auch nicht funktioniert.
RewriteEngine Off
Dies hätte funktionieren sollen - um zumindest die durch ausgelöste Umleitung zu verhindern .htaccess
. (Obwohl dies auch ein Umschreiben verhindern würde, ist dies möglicherweise nicht wünschenswert?)
Da es sich jedoch um eine (permanente) 301-Weiterleitung handelt, wurde sie vom Browser (dauerhaft) zwischengespeichert. Sie müssen also vor dem Testen sicherstellen, dass der Browser-Cache geleert wird.
Testen Sie mit 302 (temporären) Weiterleitungen, bis alles wie beabsichtigt funktioniert, um mögliche Caching-Probleme zu vermeiden.
Nebenbei: In Ihrer Root- .htaccess
Datei:
# Rewrite any request for a static resource that does not exist (in the root) RewriteCond %{REQUEST_FILENAME} !-f RewriteRule \.(css|js|png|jpg|webp|gif|svg|ttf|woff2)$ quotes%{REQUEST_URI} [L]
Kleiner Punkt, aber Sie haben woff2
hier verwiesen , aber woff
in Ihrer /quotes/.htaccess
Datei. Idealerweise sollten diese gleich sein. Sie können dies verallgemeinern, wie oben für die /quotes/.htaccess
Datei erwähnt. Zum Beispiel:
# Rewrite any request for a static resource that does not exist (in the root)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.\w{2,4}$ quotes%{REQUEST_URI} [L]