it-swarm.com.de

Multisite ohne .htaccess

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?

2
Liliane

z.B. wpinstance.com/wp-admin wird nicht mit einem abschließenden Schrägstrich in wp-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+

3
MrWhite