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?
par exemple.
wpinstance.com/wp-admin
n'est pas réécrit enwp-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+