web-dev-qa-db-fra.com

Multisite sans .htaccess

Dois-je utiliser le fichier .htaccess pour un multisite? J'ai installé le site wordpress de base et l'ai configuré avec Apache2 VirtualHost en tant que:

<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>

Cependant, lorsque je suis les étapes pour activer le multisite, wordpress me demande de coller ces options dans mon fichier .htaccess:

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]

Mais je n'ai pas de fichier .htaccess. Cependant, si je crée et configure Apache, les règles de réécriture ne fonctionnent pas, par exemple. example.com/wp-admin n'est pas réécrit en wp-admin/ avec une barre oblique finale, mais en un long lien moche: https://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&reauth=1. Cela peut-il être dû aux règles de réécriture SSL? Mes questions sont: ai-je besoin de .htaccess? Et comment faire fonctionner ses règles de réécriture?

2
Liliane

par exemple. wpinstance.com/wp-admin n'est pas réécrit en wp-admin/ avec une barre oblique finale, mais en un long lien moche: https://wpinstance.com/wp-login.php?redirect_to=https%3A%2F%2Fwpinstance.com%2Fwp-admin%2F&reauth=1

Comme cela a déjà été mentionné dans les commentaires, c'est intentionnel. Il n'y a pas de "jolie" URL pour cela. Et il n'est pas nécessaire non plus - cela ne devrait pas être indexé ou lié à.

ai-je besoin de .htaccess?

Non, vous n'avez pas "besoin" de .htaccess.

Si vous avez accès à la configuration du serveur, vous pouvez alors coller ces directives mot à mot dans le conteneur <Directory /var/www/wpinstance/> (à l'intérieur du conteneur <VirtualHost *:443>).

Cependant, pour coller ces directives directement dans le conteneur <VirtualHost>, vous devez apporter plusieurs modifications, car mod_rewrite se comporte différemment dans un contexte server (par opposition à un contexte directory ou .htaccess).

Notez que chaque fois que vous apportez des modifications à la configuration du serveur, vous devrez redémarrer Apache. Vous n'avez pas besoin de redémarrer Apache lorsque vous modifiez le fichier .htaccess.

Je voudrais aussi envisager de désactiver MultiViews - à moins que vous ne le demandiez spécifiquement pour quelque chose? c'est à dire. Supprimez MultiViews de la directive Options. (Les vues multiples peuvent entrer en conflit avec mod_rewrite - cela dépend de ce que vous faites.)

Si vous n'allez pas utiliser les fichiers .htaccess, vous devez les désactiver:

AllowOverride None

METTRE À JOUR:

J'utilise Apache/2.4.18

Notez que les directives Order et Allow sont obsolètes dans Apache 2.4 et seront supprimées dans les versions futures. Vous devez modifier les directives suivantes (Apache 2.2 et versions antérieures):

Order allow,deny
Allow from all

lire:

Require all granted

dans Apache 2.4+

3
MrWhite