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

115

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 du permalien, que je pourrais jurer que je n'ai pas touchée. Le paramètre de permalien est sur "mois et nom".

J'ai recherché des exemples similaires de ce problème en ligne et une grande partie est liée au .htaccessfichier? J'ai essayé de trouver, mais je ne peux pas. Peut-être a-t-il é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.

Adam
la source
Je vous suggère de poser cette question également sur wordpress.stackexchange.com .
James Wiseman

Réponses:

95

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

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

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

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

Rochester Oliveira
la source
1
oui j'ai montré des fichiers cachés. Je suis passé de la valeur par défaut à la perma et cela fonctionne par défaut. De plus, est-ce que wordpress se met à jour ou quelque chose? Je remarque que lorsque je me connecte, j'ai une nouvelle barre de tâches d'administration sur mon site Web, que je n'avais pas auparavant. Je ne sais pas comment ça y est arrivé.
Adam
quelqu'un a mis à jour par erreur à 3.1, donc il est entré en conflit avec un plugin
Adam
1
Manquer .htaccesspeut également conduire à ce problème, quoi que vous corrigiez le permalien, alors vérifiez d'abord, non caché ou manquant
Osify
1
Connectez-vous simplement à l'administrateur WordPress et enregistrez à nouveau les parmalinks. Cela générera un fichier .htaccess ou mettra à jour l'existant.
Keyur Patel
J'ai essayé d'utiliser admin et de mettre à jour manuellement le fichier .htaccess mais toujours le même problème. Désactivez également le plugin mais ne corrigez pas le problème de permalien.
Jaymin
56

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

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

<Directory "/var/www/html">

La ligne modifiée est:

AllowOverride None

à

AllowOverride All

Et redémarrez le serveur Web avec

systemctl restart apache2
Georgeos
la source
1
merci, cela a aidé. Dans mon cas, le paramètre AllowOverride était manquant.
chiffon
1
Cela a réglé le problème pour moi aussi. J'utilise vagrant scotchbox pour ce que ça vaut.
Matt Kaye
2
C'est presque toujours le problème. Devrait être la meilleure réponse.
Noel Baron
Cela a corrigé le problème pour moi - devrait être la réponse acceptée
Charles
52

La fixation de ce problème est très simple si vous employais permaliens autres que par defaultexemple Day and name, Month and name, Numeric, Post nameou Custom Structure, il vous suffit de

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

Choisissez le Defaultparamètre de permalien , puis enregistrez les modifications

Ensuite, vous pouvez le renvoyer à votre autre choix de permalien précédent ou le conserver comme vous defaultle souhaitez

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

Usama sulaiman
la source
1
Cela m'a quelque peu aidé, j'ai eu des erreurs de base de données et ensuite toutes mes pages étaient 404. Le basculement de l'option permalien vers une autre option (telle que plain) puis de retour à l'option par défaut a corrigé tous mes liens!
PaulBGD
Heureux d'entendre ça :)
usama sulaiman
2
Perfect answer +100
handiansom
Comment puis-je revenir au paramètre de lien permanent par défaut alors que même mysite.com/wp-adminne fonctionne pas?
J86
Perfect answer +10086
Aflext
29

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 > Permalinkset cliquez sur Enregistrer. Parfois, cela résout le problème. Si ce n'est pas le cas:
  • Vérifiez que le fichier /path/to/wordpress/.htaccessa été modifié et inclut désormais la ligne RewriteEngine On. S'il n'inclut pas la ligne, c'est un problème d'autorisations Wordpress.
  • Vérifiez que le module 'rewrite' est chargé: créez un fichier PHP avec

    <?php
      phpinfo()
    ?>

    dedans, ouvrez-le dans le navigateur et recherchez mod_rewrite. Il devrait être dans la section «Modules chargés». Si ce n'est pas le cas, activez-le - Regardez votre index.htmlfichier par défaut Apache pour plus de détails - dans Ubuntu, vous le faites avec l'assistant a2enmod.

  • Vérifiez que le serveur Apache regarde le .htaccessfichier. ouvert httpd.conf- ou il est l'alternative de 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 effectué ces modifications, n'oubliez pas de redémarrer votre serveur Apache. sudo service apache2 restart

tsvikas
la source
20

SI tout cela ne fonctionne pas, votre .htaccess est correct et l'astuce des permaliens n'a pas fonctionné, vous n'avez peut-être pas activé votre mod rewite apache2 .

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

 sudo a2enmod rewrite 
David Valenza
la source
Recherchez mod_rewritedans la phpinfo();page pour vérifier si vous avez activé. Il est Loaded Modulesdeapache2
vanduc1102
9

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

  1. Accéder aux paramètres d'administration

  2. Cliquez sur permalien et sélectionnez le nom du message dans le bouton radio.

  3. Faites défiler vers le bas et vous verrez le .htaccesscode ici comme.

    <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 .htaccessfichier.
Mahesh singh chouhan
la source
1
Où puis-je trouver cela? Il n'y a rien de tel dans les permaliens.
Boris_yo
@Boris_yo Autant que je sache, les règles n'apparaîtront que si votre htaccessfichier est notinscriptible .. s'il s'agit de wordpress l'écrira simplement lui-même ...
Obmerk Kronen
1
Cette réponse est géniale! et ne le saura jamais à moins d'utiliser WP sous Linux. Merci beaucoup
Mayeenul Islam
7

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 optimisés pour le référencement

Asif Khan
la source
4
  • Vérifiez que le répertoire sur .htaccess est le bon
  • Vérifiez que les champs "siteurl" et "home" sont corrects
José Carlos
la source
1
Pour moi, la maison était le problème. Je le répare et tout recommence à travailler. Obrithankyou José Carlos.
Tiago Gouvêa le
4

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 deux désactivées, donc la directive RewriteRule est également interdite en raison de sa capacité similaire à contourner les restrictions de répertoire: / srv / www / htdocs / wp-intranet /

La solution était de définir Options Allet AllowOverride Alldans notre configuration d'hôte virtuel.

Noir
la source
3

Si vous disposez d'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 ce n'est pas le cas, ce sont les 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 (varie en fonction de votre client FTP) - Si vous ne le faites pas, vous ne pourrez pas trouver votre fichier htaccess

  2. Accédez au dossier dans lequel se trouvent vos 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 pour votre fichier .htaccess en 666 (votre préférence sur la façon dont vous voulez faire cela)

  5. Revenez à votre page Permaliens et modifiez la structure de liens souhaitée. Le problème doit être résolu!

  6. Assurez-vous de changer le chmod du fichier htaccess en 644 une fois que vous avez terminé.

J'ai juste eu le même problème et il a semblé le résoudre instantanément! Bonne chance!

JEFF B
la source
"mod_rewrite" c'était le problème, j'ai oublié de l'activer! Thanks :)
Chemaclass
3

La plupart du temps, ce problème est résolu en visitant simplement la page Paramètres -> Lien permanent dans l'admin WordPress et en cliquant sur Enregistrer (comme plusieurs autres réponses déjà soulignées). Lors de l'accès à cette page, WordPress réécrit les directives dans le .htaccessfichier, ce qui résout le problème par magie. Le problème se produit souvent après le déplacement d'un site (le site se rompt car il .htaccessest laissé pour compte ou les paramètres doivent être mis à jour).

Si WordPress n'a pas les bonnes autorisations pour écrire le .htaccessfichier, un avis apparaîtra 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 .htaccessfichier vous-même ou, mieux, corriger les autorisations sur ce fichier. Le fichier est à la racine de l'installation de WordPress. cddans le répertoire et sudo chmod 644 .htaccess. Vous voudrez peut-être également vérifier si le fichier appartient au bon groupe et les modifications nécessaires avec chown. Demandez à votre hébergeur si vous ne savez pas comment faire cela.

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

mrtnmgs
la source
2

Vous pouvez avoir .htaccess interdit dans les paramètres de l'hébergeur Web. La définition des permaliens par défaut fonctionnerait dans ce cas.

Fanky
la source
1

Cas 1: - Pensons si migrer le site d'un hébergement vers un autre hébergement si voir ce genre de problème.

Solution: - Allez simplement à l'ancien code de fichier .htaccess de copie du serveur, puis passez dans le nouveau fichier .htaccess du serveur. 99% ça marche.

Navruk
la source
0

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

boomz
la source
0

Accédez simplement à Paramètres-> Lien permanent dans votre tableau de bord, puis sur le bouton Enregistrer les modifications dans le dernier. \

Deepak Sharma
la source
0

Je viens de changer le permalien en `` mois et jour '' de tous les messages en sélectionnant> permalien.

Maintenant, tous les messages sont ouverts et fonctionnent correctement.

Encore une fois, j'ai renommé tous les messages en leur permalien réel. Il fonctionne à nouveau très bien.

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

Shani Deshwal
la source
0

Pour les utilisateurs de nginx

Utilisez ce qui suit 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; }

Cela transfère toutes les demandes de permalien à index.php avec une chaîne URI et les arguments fournis. Faites un systemctl reload nginxpour voir les changements et vos liens non-page d'accueil devraient se charger.

ABCTaylor
la source
0

Avant d'essayer de faire des changements de lien permanent ou de configuration de serveur, veuillez vérifier votre fichier .htaccess. Il s'agit principalement d'un problème de fichier .htaccess corrompu ou vide. Réinitialisez le fichier htaccess à la valeur par défaut

# 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
Mustafa Sabir
la source
0

au bout de 2 longs jours, la solution était d'ajouter options +FollowSymLinksen haut de mon .htaccessdossier.

Ahmad Ali
la source
-1

J'ai eu ce problème il n'y a pas si longtemps. J'avais réinitialisé mon lien permanent à la valeur par défaut ou je l'ai simplement enregistré, mis à jour les thèmes / noyau vers (4.7.4) / plugins, désactivé tous les plugins, basculé vers le thème par défaut, base de données optimisée, .htaccess est déjà par défaut, les autorisations de fichier vérifiées, mod_rewrite est activé .

Jusqu'à présent, rien ne fonctionne, ce qui fonctionne sont les articles, la nouvelle page, la page / contact SAUF pour les anciennes pages.

Fondamentalement, les pages / URL qui ne fonctionnent pas sont:

/breeding
/training
/training/*
/breeding/*

Ultimate, j'ai trouvé ces fichiers dans le dossier racine:

/breeding.php et /training.php

J'ai renommé les deux fichiers et les pages ci-dessus ont fonctionné.

Loreto Gabawa Jr.
la source