web-dev-qa-db-fra.com

wordpress permalinks ne fonctionne pas - htaccess semble ok mais obtient une erreur 404 sur les pages

J'ai mis à jour la structure de permalien vers /% postname%/et cela a mis à jour mon .htaccess avec:

# 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

Mais j'ai toujours 404 erreurs sur les pages. Dois-je modifier d'autres paramètres?

Edit: si cela aide, le journal Apache semble chercher directement dans le dossier permalien. C'est à dire.:

[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/
30
babbaggeii

Pour les autres personnes accédant sur cette page - /. Un autre problème pourrait être (si vous utilisez Apache en tant que serveur Web), votre fichier httpd.conf ou votre fichier sites-available/sitename.conf doit être édité.

Votre répertoire Web devra permettre au fichier .htaccess de remplacer ses paramètres. 

recherchez votre répertoire Web dans le fichier - ce sera dans la majeure partie du fichier de configuration ou dans une section VirtualHost.

<Directory /path/to/site>
     #add the following setting to allow .htaccess in your web dir to work
     AllowOverride FileInfo

     #other settings ---

</Directory>

Cela vous permettra de configurer les URL WordPress comme vous le souhaitez, au sein de WordPress.

*** Édité - Merci nietonfir Pour la mise à jour. Utilisez le moins de privilèges au début. Si cela ne fonctionne pas, remplacez AllowOverride FileInfo par AllowOverride All

68
MTLHD777

Plusieurs facteurs peuvent empêcher la règle de réécriture de fonctionner. Mon serveur Ubuntu avait besoin de 3 changements pour que les permaliens fonctionnent.

Dans les nouvelles versions d'Apache2, vous devez activer le module:

Sudo a2enmod rewrite
Sudo service Apache2 restart

Vous devrez peut-être également modifier le fichier Apache2.conf. 

Sudo nano /etc/Apache2/Apache2.conf

Modifiez votre règle de substitution de répertoire Web en AllowOverride All .

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Après cela, redémarrez à nouveau le service. 

Le fichier .htaccess du répertoire d’installation de WordPress doit être détenu ou lisible/modifiable par le serveur Web.

Cela peut être accompli en remplaçant le propriétaire par www-data (généralement l'utilisateur du serveur Web) ou en modifiant les autorisations.

Sudo chown www-data /var/www/wordpress-install/.htaccess 

OR

Sudo chmod 664 /var/www/wordpress-install/.htaccess

Connectez-vous à votre backend administrateur Wordpress et enregistrez les paramètres de permalien. Ils devraient fonctionner normalement.

36
gan

Ceci est maintenant résolu. Je n'avais pas activé mod_rewrite. Alors j'ai fait ça:

$ Sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service Apache2 restart
$ service Apache2 restart
 * Restarting web server Apache2                                                                              
28
babbaggeii

utilisez ci-dessous le code .htaccess, il suffit de mettre le nom de votre projet (qui est dans le répertoire www) dans le code ci-dessous

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

# END WordPress

Merci

6
Krunal Shah

Vous voudriez dire à Apache de suivre votre fichier .htaccess. Vous pouvez le faire en modifiant le fichier Apache.conf

$Sudo nano /etc/Apache2/Apache.conf

Faites défiler jusqu'à la ligne Par défaut, ce sera:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

remplacez la valeur de AllowOverride par All, elle devient alors:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Appuyez sur ctrl + x et appuyez sur y pour enregistrer le fichier de configuration. Afin d’apporter ces modifications au serveur, activez d’abord le mod_rewrite.

$ Sudo a2enmod rewrite

Et puis redémarrez le serveur

$ Sudo service Apache2 restart

Terminé!

Source: https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/

6

Une dernière chose à vérifier si cela décrit votre problème:

  • htaccess et mod_rewrite sont configurés correctement 
  • 404 erreur sur certains permaliens mais pas sur d'autres

Assurez-vous qu'il n'y a pas de fichiers .php ou de répertoires existants dans le même dossier que votre installation Wordpress avec des noms correspondant à un permalien Wordpress.

Par exemple, si vous avez les permaliens de la page Wordpress suivants:

 example.com/name_one/
 example.com/name_two/

et le répertoire contenant votre installation Wordpress comprend le fichier suivant:

 name_one.php

alors ce sera le résultat:

Plus important encore, la deuxième URL donnera un 404 au lieu de name_one.php, ce qui signifie que ce problème est difficile à diagnostiquer car il peut donner les mêmes symptômes qu’un fichier .htaccess mal écrit.

0
Rick Gladwin

Utilisateurs de WAMP (Windows): certaines versions de WAMP (toutes versions?) N'activent pas mod_rewrite ni ne permettent de suivre les liens SymLinks par défaut. Pour activer la fonctionnalité requise, accédez au Apache/conf/httpd.conf file, ouvrez-le à l'aide d'un éditeur de texte et décommentez la ligne LoadModule rewrite_module modules/mod_rewrite.so (c'est-à-dire supprimez le signe dièse/dièse au début de la ligne). Ensuite, dans le même fichier, une section commence par la ligne "Options FollowSymlinks". Modifiez la deuxième ligne de cette section de "AllowOverride none" en AllowOverride all. Enregistrez le fichier httpd.conf modifié et redémarrez tous les modules WAMP. Vos permaliens devraient maintenant fonctionner.

Pour plus de détails, Résolution des problèmes de permalien

0
khurram

Je faisais face au même problème et il me restait encore une chose à rechercher. 

Voici ce que vous devez faire pour que Wordpress permalinks fonctionne correctement:

  1. Assurez-vous que vous disposez des modes d'autorisation appropriés pour les fichiers et les dossiers de votre répertoire wordpress:
    Sudo find . -type f -exec chmod 644 {} +
    Sudo find . -type d -exec chmod 755 {} + 

  2. Pour la structure permalien, assurez-vous que mode_rewrite est activé dans Apache:
    Sudo a2enmod rewrite
    Sudo service Apache2 restart

0
ganchclub

Encore une autre possibilité: je viens de mettre à jour mon macOS qui toujours vis le fichier de configuration Apache Entre autres choses, j'ai également dû réactiver le module mod_rewrite. Trouvez la ligne qui dit,

#LoadModule rewrite_module libexec/Apache2/mod_rewrite.so

Et enlève le hash, dit-il,

LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
0
Jeff

Si vous êtes configuration d'un nouveau site ou d'un site cloné sur Ubuntu, n'oubliez pas de créer un lien symbolique vers le fichier de configuration du site, par exemple. /etc/Apache2/sites-available/your-file.conf dans le dossier /etc/Apache2/sites-enabled afin qu'Apache le charge.


Il suffit de lancer: Sudo a2ensite your-file.conf, puis Sudo service Apache2 reload

Sudo a2dissite your-file.conf pour supprimer le lien symbolique, c’est-à-dire désactiver la configuration.

0
Magnus