web-dev-qa-db-fra.com

WordPress me donne 404 pages non trouvées pour toutes les pages sauf la page d'accueil

Tout à coup, je vais sur mon site WordPress et toutes les pages me donnent une page 404 non trouvée. Je suppose que le problème réside dans la structure permalien, que je pourrais jurer de ne pas toucher. Le paramètre permalien est défini sur "mois et nom".

J'ai recherché des exemples similaires de ce problème en ligne et beaucoup d'entre eux ont à voir avec le fichier .htaccess? J'ai essayé de trouver, mais je ne peux pas. Peut-être qu'il a été supprimé d'une manière ou d'une autre? Où est-il censé être situé.

Toutes les suggestions seront utiles

et bien sûr je peux voir les fichiers cachés.

95
Adam

.htaccess est un fichier caché, vous devez donc définir tous les fichiers comme visibles dans votre ftp.

Je vous suggère de rétablir la structure par défaut de votre structure permalink (? P = ID) afin de vous assurer que le problème est .htaccess.

Après cela, vous pouvez simplement définir à nouveau la structure "mois et nom", et voir si cela fonctionne.

PS: Avez-vous mis à jour à 3.1? J'ai vu des personnes avec des problèmes de plugin dans ce cas.

90

La résolution de ce problème est très simple si vous utilisiez des liaisons permanentes autres que default telles que Day and name, Month and name, Numeric, Post name ou Custom Structure, il vous suffit de 

Connectez-vous à votre zone d'administration: Settings > Permalinks qui devrait être: http://yoursite.com/wp-admin/options-permalink.php 

Choisissez Default paramètre permanent , puis enregistrez les modifications

Ensuite, vous pouvez renvoyez-le à votre autre choix précédent de permalien ou conservez-le aussi default à votre guise

Notez que ce problème peut se produire lorsque vous déplacez votre site d'un domaine ou d'un emplacement vers un autre.

46
usama sulaiman

Fondamentalement, le fichier .htaccess doit exister et le fichier httpd.conf doit être correct.

Dans mon cas, j'ai changé le fichier /etc/httpd/conf/httpd.conf dans la section:

<Directory "/var/www/html">

La ligne changée est:

AllowOverride None

à

AllowOverride All

Et redémarrez le serveur Web.

38
georgeos

Si le comportement par défaut (example.com/?p=42) fonctionne, vous devez:

  • Changez pour votre style de lien permanent préféré: Admin: Settings > Permalinks et cliquez sur Enregistrer. Parfois, cela corrige le problème. Si ce n'était pas le cas:
  • Vérifiez que le fichier /path/to/wordpress/.htaccess a été modifié et qu'il inclut maintenant la ligne RewriteEngine On. S'il n'inclut pas la ligne, il s'agit d'un problème d'autorisations Wordpress.
  • Vérifiez que le module 'rewrite' est chargé: créez un fichier PHP avec 

    <?php
      phpinfo()
    ?>
    

    dans celui-ci, ouvrez-le dans le navigateur et recherchez mod_rewrite. Cela devrait être dans la section 'Loaded Modules' . Si ce n'est pas le cas, activez-le - consultez votre fichier index.html par défaut pour Apache pour plus de détails - sous Ubuntu, vous le faites avec l'aide a2enmod.

  • Vérifiez que le serveur Apache examine le fichier .htaccess. open httpd.conf - ou c'est l'alternative d'Ubuntu, /etc/Apache2/Apache2.conf. Dans ce document, vous devriez avoir quelque chose comme

    <Directory /path/to/wordpress>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
    
  • Après avoir apporté ces modifications, n'oubliez pas de redémarrer votre serveur Apache. Sudo service Apache2 restart

19
tsvikas

Il est facile de résoudre le problème en suivant simplement les étapes ci-dessous , Si vous vous connectez pour vous connecter à votre tableau de bord administrateur,

Go to Settings » Permalinks, and simply click on Save Changes button.

 enter image description here

Cela mettra à jour vos paramètres de permaliens et effacera les règles de réécriture. Dans la plupart des cas, cette solution corrige l’erreur 404 de WordPress posts. Toutefois, si cela ne fonctionne pas pour vous, vous devrez probablement mettre à jour votre fichier .htaccess manuellement.

Connectez-vous à votre serveur via FTP et modifiez le fichier .htaccess situé au même emplacement où se trouvent des dossiers tels que/wp-content/et/wp-includes /, dans votre .htaccess

# 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

J'espère que cela résoudra le problème.

14
Pronab Roy

Dans l'interface d'administration de WordPress, procédez comme suit:

  1. Aller au réglage administrateur

  2. Cliquez sur permalien et sélectionnez le nom de poste dans le bouton radio.

  3. Faites défiler la liste et vous verrez le code .htaccess comme ci-dessous.

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
    
  4. Copiez le code et collez-le dans le fichier .htaccess.
9

Si tout cela ne fonctionne pas, votre .htaccess est correct, et le truc des permaliens ne fonctionne pas, vous n'avez peut-être pas activé votre mod Apache2 rewite

J'ai couru ceci et mon problème a été résolu:

 Sudo a2enmod rewrite 
8
David Valenza

Cette erreur est due à la désactivation du mod de réécriture dans le document Apache httpd.conf, décommentez-le simplement et profitez des permaliens de référencement convivial

6
Asif Khan
  • Vérifiez que le répertoire sur .htaccess est le bon
  • Vérifiez les champs "siteurl" et "home" sont corrects
3
José Carlos

Si vous avez un accès FTP à votre compte:

Tout d’abord, connectez-vous à votre wp-admin et allez dans Paramètres> Permaliens

Vous devriez voir quelque chose en bas qui dit: 

"Si votre fichier .htaccess était accessible en écriture, nous pourrions le faire automatiquement, mais il ne s’agit pas là de règles mod_rewrite que vous devriez avoir dans votre fichier .htaccess. Cliquez dans le champ et appuyez sur CTRL + a pour tout sélectionner."

Si cela est vrai, procédez comme suit:

  1. Allez dans les préférences de votre client FTP et assurez-vous que les fichiers cachés sont affichés (cela dépend de votre client FTP). Si vous ne le faites pas, vous ne pourrez pas trouver votre fichier htaccess.

  2. Accédez au dossier contenant les répertoires wp-admin, wp-content, wp-includes. Recherchez le fichier .htaccess. S'il existe, passez à l'étape 4

  3. S'il n'existe pas, créez un nouveau fichier vierge dans votre programme FTP appelé .htaccess.

  4. Changez le CHMOD de votre fichier .htaccess en 666 (votre préférence sur la façon de procéder).

  5. Retournez à votre page Permalinks et éditez la structure de lien souhaitée. Le problème devrait être résolu!

  6. Assurez-vous de changer le chmod du fichier htaccess à 644 après avoir terminé.

Je viens d'avoir le même problème et cela a semblé résoudre ce problème instantanément! Bonne chance!

2
JEFF B

La plupart du temps, ce problème est résolu en visitant simplement la page Paramètres -> Permalink de l’administrateur de WordPress, puis en cliquant sur Enregistrer (ainsi que plusieurs autres réponses déjà indiquées). Lors de l'accès à cette page, WordPress réécrit les directives dans le fichier .htaccess qui corrige le problème de façon magique. Le problème se produit souvent après le déplacement d'un site (le site est interrompu car le .htaccess est oublié ou les paramètres doivent être mis à jour).

Si WordPress ne dispose pas des autorisations nécessaires pour écrire le fichier .htaccess, un avis apparaît en haut de la page et des instructions supplémentaires en bas, lorsque les paramètres sont enregistrés. Dans ce cas, vous devez modifier le fichier .htaccess vous-même ou, mieux, corriger les autorisations sur ce fichier. Le fichier est à la racine de l'installation de WordPress. cd dans le répertoire et Sudo chmod 644 .htaccess. Vous pouvez également vouloir vérifier si le fichier appartient au bon groupe et modifier ce qui est nécessaire avec chown. Demandez à votre fournisseur d'hébergement si vous ne savez pas comment faire cela.

Si vous êtes sur l'hébergement partagé, c'est probablement tout ce que vous pouvez faire. Si le problème persiste, vous souhaiterez peut-être consulter l'assistance de votre fournisseur d'hébergement. Sinon, assurez-vous que l'utilisation des fichiers .htaccess est activée sur le serveur, comme @georgeos l'a déjà suggéré. Notez que httpd.conf n'est pas toujours utilisé ( Ubuntu indique qu'il est obsolète mais la documentation officielle Apache indique toujours qu'il s'agit souvent du fichier de configuration principal ). /etc/httpd/conf/httpd.conf et /etc/Apache2/Apache2.conf semblent être les emplacements les plus courants pour ce fichier. Recherchez le bloc du dossier public, généralement <Directory /var/www/>, et assurez-vous que la directive AllowOverride est définie sur All. S'il est défini sur None, votre fichier .htaccess est simplement ignoré par le serveur.

2
mrtnmgs

Nous avons eu le même problème et l'avons résolu en vérifiant le error.log de notre hôte virtuel. Nous avons trouvé le message suivant: 

AH00670: Les options FollowSymLinks et SymLinksIfOwnerMatch sont toutes les deux désactivées, la directive RewriteRule est donc également interdite en raison de sa similitude possibilité de contourner les restrictions de répertoire: /srv/www/htdocs/wp-intranet /

La solution consistait à définir Options All et AllowOverride All dans notre configuration d’hôte virtuel.

2
Black

J'ai installé mod_rewrite pour résoudre le problème. Le lien ci-dessous fournit un guide d’installation: - http://www.iasptk.com/enable-Apache-mod_rewrite-ubuntu-14-04-lts/

1
Abhishek K

Cas 1: - Imaginons si migrer un site d’un hébergement à un autre si vous voyez ce genre de problème.

Solution: - Accédez simplement au code de fichier .htaccess de l’ancien serveur, puis collez-le au nouveau fichier .htaccess du serveur. 99% ça marche.

0
Navruk

Pour les utilisateurs de nginx

Utilisez les éléments suivants dans votre fichier de configuration pour votre site (généralement /etc/nginx/sites-available/example.com)

location / { try_files $uri $uri/ /index.php?q=$uri&$args; }

Ceci transmet toutes les requêtes permalink à index.php avec une chaîne d'URI et des arguments fournis. Faites un systemctl reload nginx pour voir les modifications et vos liens autres que ceux de la page d'accueil devraient se charger.

0
ABCTaylor

Il suffit de naviguer vers Paramètres -> Permalink dans votre tableau de bord, puis Enregistrer les modifications bouton dans le dernier. \

0
Deepak Sharma

Si votre installation WordPress est dans un sous-dossier (ex. https://www.example.com/subfolder ) changez cette ligne dans votre WordPress .htaccess

RewriteRule . /index.php [L]

à 

RewriteRule . /subfolder/index.php [L]

Ce faisant, vous indiquez au serveur de rechercher WordPress index.php dans le dossier WordPress (ex. https://www.example.com/subfolder ) plutôt que dans le dossier public (ex. https: //www.example.com ).

0

Il est possible que .htaccess ne soit pas autorisé dans les paramètres d’hôte Web . La définition de permaliens par défaut fonctionnerait dans ce cas.

0
Fanky

J'ai le même problème et donc je supprime Apache et le fais à nouveau et le problème a été résolu.

0
boomz

Avant d’essayer d’apporter des modifications de permalien ou de configuration de serveur, veuillez vérifier votre fichier .htaccess Il s’agit principalement d’un problème de fichier .htaccess corrompu ou vierge. Réinitialiser le fichier htaccess sur default

# 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
0
Mustafa sabir

Je viens de changer le permalien en 'mois et jour' de tous les posts en allant dans> permalien.

Maintenant, tous les messages sont ouverts et fonctionnent bien.

Encore une fois, j'ai renommé tous les messages en son permalien actuel. Sa fonctionne à nouveau bien.

Cette méthode a fonctionné pour moi :-)

0
Shani Deshwal