Muss ich .htaccess
für eine Multisite-Datei verwenden? Ich habe die grundlegende WordPress-Site eingerichtet und sie mit Apache2 VirtualHost wie folgt konfiguriert:
<VirtualHost *:80>
...
RewriteEngine On
Options FollowSymLinks
# THIS REDIRECTS TO HTTPS
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
DocumentRoot /var/www/example/
<Directory /var/www/example/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
...
DocumentRoot /var/www/example/
<Directory /var/www/example/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
Include /etc/letsencrypt/options-ssl-Apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
Wenn ich jedoch die Schritte zum Aktivieren von Multisite befolge, fordert WordPress mich auf, diese Optionen in meine .htaccess
-Datei einzufügen:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Aber ich habe keine .htaccess
Datei. Wenn ich es jedoch mache und Apache konfiguriere, funktionieren Umschreibregeln nicht, z. example.com/wp-admin
wird nicht mit einem abschließenden Schrägstrich in wp-admin/
umgeschrieben, sondern in einen hässlich langen Link: https://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&reauth=1
. Kann dies an den Regeln zum Umschreiben von SSL liegen? Meine Fragen sind: brauche ich .htaccess
? Und wie lasse ich die Umschreiberegeln funktionieren?
z.B.
wpinstance.com/wp-admin
wird nicht mit einem abschließenden Schrägstrich inwp-admin/
umgeschrieben, sondern in einen hässlich langen Link:https://wpinstance.com/wp-login.php?redirect_to=https%3A%2F%2Fwpinstance.com%2Fwp-admin%2F&reauth=1
Wie bereits in den Kommentaren erwähnt, ist dies beabsichtigt. Hierfür gibt es keine "hübsche" URL. Und das muss auch nicht sein - das sollte nicht indiziert oder verknüpft sein.
brauche ich
.htaccess
?
Nein, Sie brauchen keinen .htaccess
.
Wenn Sie Zugriff auf die Serverkonfiguration haben, können Sie diese Anweisungen wörtlich in den Container <Directory /var/www/wpinstance/>
(innerhalb des Containers <VirtualHost *:443>
) einfügen.
Um diese Direktiven jedoch direkt in den <VirtualHost>
-Container einzufügen, müssten Sie einige Änderungen vornehmen, da sich mod_rewrite in einem server -Kontext anders verhält (im Gegensatz zu einem Verzeichnis oder .htaccess
-Kontext).
Beachten Sie, dass Sie Apache jedes Mal neu starten müssen, wenn Sie Änderungen an der Serverkonfiguration vornehmen. Sie müssen Apache nicht neu starten, wenn Sie die .htaccess
-Datei ändern.
Ich würde auch in Betracht ziehen, MultiViews
zu deaktivieren - es sei denn, Sie benötigen dies ausdrücklich für etwas? dh Entfernen Sie MultiViews
aus der Anweisung Options
. (MultiViews können mit mod_rewrite in Konflikt stehen - hängt davon ab, was Sie tun.)
Wenn Sie keine .htaccess
-Dateien verwenden, sollten Sie diese deaktivieren:
AllowOverride None
UPDATE:
Ich benutze Apache/2.4.18
Beachten Sie, dass die Anweisungen Order
und Allow
in Apache 2.4 veraltet sind und in zukünftigen Versionen entfernt werden. Sie müssen die folgenden Anweisungen (Apache 2.2 und früher) ändern:
Order allow,deny Allow from all
lesen:
Require all granted
in Apache 2.4+