web-dev-qa-db-fra.com

Rewrite-Rules ne fonctionne pas sur un vhost, tout se passe sur index.php

après avoir configuré les règles wordpress htaccess dans mon vhost, je n’ai pas pu entrer dans la zone wp-admin. J'ai toujours été redirigé vers la page d'accueil de mon instance wordpress.

La réécriture elle-même a fonctionné sur la page principale. Tous les liens fonctionnaient jusqu'à présent, mais la zone d'administration reste sans accès.

Règles de réécriture utilisées:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Personnellement, je ne sais pas par où commencer à chercher, je suis même incapable de trouver ce problème sur Google, ce qui est plutôt rare - peut-être que quelqu'un ici sait où le problème doit être localisé.

2
Sam

OK, donc le problème initial était: How to get the Rewrite Rule working at a VHOST Environment et la réponse - si elle était inconnue - était un peu délicate. RewriteBase ne fonctionne pas sur un VHOST. La solution consiste à placer tous ces éléments Rewrite-Stuff dans un répertoire-section comme celui-ci:

<VirtualHost *:80>
  ServerName www.mydomain.tld
  ...more config stuff...

  <Directory "/var/www/mydomain">
    RewriteEngine On
    RewriteBase /

    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
  </Directory>
</VirtualHost>

Alors ça marche. Je mettrai à jour le titre des questions pour obtenir de meilleurs résultats sur Google à l'avenir. J'espère que cela pourra aider tous ceux qui rencontrent les mêmes problèmes.

2
Sam

Je ne sais pas si cela vous aidera, mais sa bonne pratique consiste à inclure les commentaires WordPress BEGIN et END autour de vos règles, ainsi que la vérification de mod_rewrite:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Également:

  • N'appliquez pas ces règles tant que vous n'avez pas choisi et enregistré les permaliens dans la zone d'administration. Une fois cette opération effectuée, vous devez configurer le fichier .htaccess.
  • Les commentaires sont utilisés par les plugins pour permettre la réécriture du fichier htaccess sans déranger les règles fondamentales de wordpress
  • Assurez-vous que votre base de réécriture est correctement définie
1
Tom J Nowell

J'utilise les éléments suivants dans ma configuration vhost. Avec cela, vous pouvez utiliser le fichier .htaccess dans le répertoire de votre projet:

<Directory "YOUR-PROJECT-PATH">
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    DirectoryIndex index.html index.htm index.php
</Directory>
0
kennyevo