web-dev-qa-db-fra.com

Pourquoi WordPress 3.0.4 continue-t-il à supprimer le contenu du fichier .htaccess?

Je viens d'installer WordPress 3.0.4 sur un serveur hébergé GoDaddy. Et j'ai eu un problème avec mon fichier .htaccess. Pour une raison quelconque, WordPress efface automatiquement tous les paramètres de configuration mod_rewrite dans le fichier .htaccess lorsque je consulte la page WP admin pour définir des liens permanents. Supprimer le fichier .htaccess annule en quelque sorte le but de cette page.

J'ai pu créer une solution de contournement en entrant simplement les configurations dans le fichier .htaccess et en ne visitant jamais la page de configuration permalink. Mais cela ne semble pas être une bonne solution.

Est-ce que n'importe qui peut partager des pensées sur ce qui pourrait causer ceci?

Merci! David

2
user2052

Quelque chose d'autre se passe ici. Wordpress n'efface pas le contenu du fichier .htaccess lorsqu'il écrit de nouveaux permaliens; il ajoute la nouvelle structure permalink à la fin du fichier.

Avez-vous quelque chose d'autre code ou plugins qui utilise .htaccess? Êtes-vous sur un serveur Windows qui ne prend pas nativement en charge la réécriture de mod et nécessite par conséquent d'autres moyens d'activer la réécriture de mod et pourrait être la cause de l'effacement?

Si vous voulez empêcher WP d'écrire/d'ajouter au fichier .htaccess, définissez des permaliens, apportez vos propres modifications, puis définissez les autorisations .htaccess sur 444, puis vous pourrez afficher la page d'admin des permaliens sans WP s'ajoutant automatiquement au fichier. C'est ce que je fais.

4
markratledge

WordPress essaie toujours d'écrire le fichier .htaccess lorsque vous visitez la page Permaliens , même s'il n'y a rien à écrire (pour vous assurer que les anciennes règles ne restent pas). Cela se produit dans save_mod_rewrite_rules() , qui est appelée depuis $wp_rewrite->flush_rules() si le paramètre $hard est true.

Tout ce qui se trouve entre les lignes # BEGIN WordPress et # END WordPress est la sortie de $wp_rewrite->mod_rewrite_rules() . En regardant cette fonction, il n'y a qu'un nombre limité de cas où cela ne renverrait rien:

  • $wp_rewrite->using_permalinks() renvoie false, ce qui est le cas si la structure de permalien est vide (si les permaliens sont désactivés)
  • le mod_rewrite_rules ou le rewrite_rules ne renvoie rien. Cela peut arriver si un plugin pense qu'il s'agit d'actions et non de filtres, et oublie ainsi de renvoyer quoi que ce soit.

Je voudrais essayer d'appeler $wp_rewrite->mod_rewrite_rules() et voir ce qu'il retourne.

1
Jan Fabry

Merci @Jan ... a résolu un de mes problèmes d'une semaine! .htaccess continuait à être écrasé (en fait corrompu et surchargé de paramètres WP répétitifs) .. .. pensait que c’était mon plugin de mise en cache mais a découvert que c’était mon functions.php où j’ai configuré la taxonomie personnalisée et utilisé le paramètre flush_rewrite_rules(); ... flush_rewrite_rules( false ); en fait un "flush soft" selon WP Codex et cela résout mon problème de htaccess! Cent bénédictions à vous

0
Jooooooooe