Ich habe ein Setup, bei dem sich eine statische Website im Stammordner befindet und Wordpress in einem Unterordner. Daher muss ich alle Anfragen an index.html umschreiben, während alle Wordpress-bezogenen Anfragen an den Unterordner gehen sollten. Dies erreiche ich mithilfe von zwei .htaccess-Dateien: eine im Stammordner und eine weitere im Wordpress-Unterordner.
Stamm-.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-.+
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule (wp-.*)$ /wordpress/$1 [L]
# Rewrite rule for frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Wordpress-Unterordner .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
Dies funktioniert, aber beim Versuch, es zu öffnen, /wp-admin/
werde ich umgeleitet, /wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fwordpress%2Fwp-admin%2F&reauth=1
sodass der Unterordner in der URL angezeigt wird.
Gibt es eine Möglichkeit, den Unterordner auszublenden?
Antwort1
Um den Unterordner in der URL für WordPress-bezogene Anfragen auszublenden, können Sie Ihr Setup leicht ändern. Sie können die Stammdatei .htaccess so lassen, wie sie ist, aber einige Änderungen an der .htaccess-Datei im WordPress-Unterordner vornehmen. So können Sie es tun:
- Ändern Sie die .htaccess-Datei im WordPress-Unterordner (
e.g.,
/wordpress/) wie folgt:
Fügen Sie diese Zeile hinzu, um zu verhindern, dass der Unterordner in der URL angezeigt wird
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L]
Durch Hinzufügen der Bedingung RewriteCond %{REQUEST_URI} !^/wordpress/ stellen Sie sicher, dass Anforderungen an den Ordner /wp-admin/ von dieser Umschreiberegel nicht betroffen sind und der Unterordner daher in der URL für WordPress-bezogene Anforderungen nicht angezeigt wird.
In Ihrer Stammdatei .htaccess können Sie die Regeln zum Umschreiben wie folgt vereinfachen
RewriteEngine aktiviertindex.html
:Anfragen an den Unterordner /wordpress/ von dieser Regel ausschließen
RewriteCond %{REQUEST_URI} !^/wordpress/
Umschreiberegel für das Frontend
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]
Mit diesen Änderungen werden WordPress-bezogene Anfragen weiterhin vom WordPress-Unterordner verarbeitet und der Unterordner wird beim Zugriff auf /wp-admin/ nicht in der URL angezeigt. Andere Anfragen werden wie zuvor in index.html im Stammordner umgeschrieben.