Après la migration du serveur, seule la page d'accueil fonctionne


33

J'ai récemment changé l'hébergement de mon site WordPress en VPS.net . J'ai déplacé tous mes fichiers et importé la base de données. Tout semblait aller bien jusqu'à ce que je clique sur un lien et que je remarque que toutes mes pages ramènent un 404 à l'exception de la page d'accueil.

L'URL du site est http://inksquared.com


Réponses:


42

Je suppose que vous obtenez http: // votre site mais http: // votre site / n'importe quoi

J'ai eu un problème similaire et il a été résolu lorsque j'ai changé

le httpd.confde

AllowOverride None

à

AllowOverride All

Selon ma compréhension, cela .htaccessprendra effet.


6
Celui-ci a fonctionné pour moi. La plupart des gens oublient cela.
qasimzee

1
Cela a fonctionné pour moi aussi, je apache2.conf/var/www
n'ai

1
Cela faisait partie de la réponse pour moi. J'ai ajouté AllowOverride Allà la configuration du site, mais j'ai également ajouté Options FollowSymLinks. J'ai ensuite pu utiliser des permaliens personnalisés, qui ont également créé un fichier racine .htaccess approprié. Après cela, tout a fonctionné.
boot13

1
Et n'oubliez pas de redémarrer apache! "sudo service apache2 restart"
gradosevic

1
Ça a marché. Assurez-vous de modifier l'option AllowOverride aux emplacements du fichier conf.
Najeeb

44

Essayez de vider vos règles mod_rewrite:

Tableau de bord -> Paramètres -> Permaliens

Enregistrer les paramètres (pas besoin de faire de changements)


7
Pas même besoin de faire des économies. Les règles sont vidées simplement en visitant cette page, et une partie du vidage des règles implique l'écriture dans .htaccess.
John P Bloch

J'apprends quelque chose de nouveau chaque jour ... :)
Chip Bennett

@john êtes-vous sûr que seulement les chargements de page écrivent dans .htaccess si nécessaire? J'avais l'impression que seuls les rewrite_rules de la base de données étaient vidés.
Ashfame

wp-admin / options-permalinks.php appelle flush_rewrite_rules(), un wrapper pour WP_Rewrite::flush_rules()qui, si $hardc'est true(ce qu'il est quand il est appelé sur cette page) et la fonction save_mod_rewrite_rulesexiste (définie dans wp-admin/includes/misc.php, incluse dans toutes les pages d'administration), elle appelle save_mod_rewrite_rules(). Voir la définition de cette fonction ici: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
John P Bloch

La fonction qui écrit réellement les règles de réécriture dans .htaccess est appelée insert_with_markers(utilisée save_mod_rewrite_rules()ci-dessus), définie ici: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
John P Bloch

27

J'avais fait face au même problème.

J'ai fait ce qui suit pour le résoudre sur un serveur Ubuntu:

  1. Dans /etc/apache2/apache2.conf , modifiez AllowOverride None pour / var / www / vers AllowOverride All

  2. Tapez la commande suivante pour activer mod_rewrite pour .htaccess

réécriture sudo a2enmod

  1. Redémarrez votre serveur apache:

sudo service apache2 restart

Le problème résolu !!!


Merci, je n'ai pu résoudre ce problème avec aucune des autres suggestions, mais j'ai a2enmod rewritefait l'affaire.
Martin McCallion

+1 Pour avoir mentionné le mod de réécriture. Je ne savais pas que cela n'était pas activé par défaut.
Native Coder

sudo a2enmod rewriteJ'en avais vraiment besoin pour obtenir ce wokring, merci!
Huskie69

1
Merci! La commande a a2enmod rewritefait l'affaire pour moi.
Lucas Basquerotto

Merci Avinash! Même chose avec Lucas, la réécriture a2enmod a fait l'affaire pour moi
Jero Dungog

1

La raison est probablement que le .htaccessfichier n'a pas été copié. Sous Mac OS X et dans certaines applications FTP, ce fichier est considéré comme "masqué" car il commence par un .. Si vous allez dans la section Paramètres -> Permaliens de votre section d'administration, vous pouvez régénérer ce fichier, mais il est probablement préférable de trouver la version que vous aviez précédemment et de la réutiliser (surtout si vous utilisez un plugin de mise en cache).


1

Dans Ubuntu 14.04 - le fichier 000-default.conf peut être trouvé ici/etc/apache2/sites-available

Ou si vous exécutez plusieurs wp, le paramètre d'hôte virtuel sera le nom de votre fichier de configuration. par exemple domain.conf

Vous devez remplacer AllowOverride NonepourAllowOverride All

J'espère que cela fonctionnera.


0

Avez-vous un serveur Web 404 ou un WordPress 404? S'il s'agit d'un serveur Web 404, vous n'avez probablement pas copié le fichier racine htaccess à partir de l'ancienne installation, ou il n'a pas les autorisations correctes pour s'exécuter.

Mon premier élément de dépannage serait de vérifier et de voir si un fichier htaccess existe à la racine. Et si oui, ce qu'il contient.


Vérifié le fichier .htaccess. Il contient le même code qui est apparu dans la section permalien du panneau d'administration wordpress. J'ai changé les autorisations en écriture et je ne vois aucun changement apparent.
mikeyrocks

3
@mikeyrocks Hmm ... une autre possibilité est que votre nouveau serveur n'ait pas activé mod_rewrite. Important: obtenez-vous un serveur 404 (page blanche ordinaire qui dit "introuvable"), ou un WordPress 404 (style comme le reste de votre site)?
MathSmath
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.