web-dev-qa-db-ja.com

WordPress 3.0.4が.htaccessファイルの内容を削除し続けるのはなぜですか?

GoDaddyがホストするサーバーにWordPress 3.0.4をインストールしました。 .htaccessファイルに問題があります。何らかの理由で、私がパーマリンクを設定するためにWP管理ページを見るたびに、WordPressは.htaccessファイル内のすべてのmod_rewrite設定を自動的に消去します。 .htaccessファイルを削除すると、そのページの目的は無効になります。

手動で設定を.htaccessファイルに入力するだけで、パーマリンク設定ページにアクセスしないで回避策を作成できました。しかし、これは良い解決策のようには感じません。

これを引き起こす可能性があるものについて誰かが意見を共有できますか?

ありがとうございます。ダビデ

2
user2052

他に何かがここで起こっています。 Wordpressは、新しいパーマリンクを書き込むときに、.htaccessファイルの内容を消去しません。ファイルの最後に新しいパーマリンク構造を追加します。

.htaccessを使用する他のコードやプラグインはありますか?あなたはもともとmod rewriteをサポートしておらず、その結果mod rewriteを有効にするための他の方法を必要とし、消去の原因になっているかもしれないWindowsサーバ上にいますか?

WPが.htaccessファイルに書き込み/追加しないようにするには、パーマリンクを設定し、独自の変更を加えてから、.htaccess権限を444に設定します。WP自動的にファイルに追加されます。これが私がすることです。

4
markratledge

WordPressは、パーマリンクページにアクセスしたときに、(古いルールが残っていないことを確認するために)何も書き込まれていない場合でも、常に.htaccessファイルを書き込もうとします。これは save_mod_rewrite_rules() で発生します。これは$hardパラメータがtrueの場合に $wp_rewrite->flush_rules() から呼び出されます。

# BEGIN WordPress行と# END WordPress行の間にあるものはすべて $wp_rewrite->mod_rewrite_rules() の出力です。その関数を見て、それが何も返さないだろうケースが限られた数だけあります:

  • $wp_rewrite->using_permalinks()falseを返します。これは、パーマリンク構造が空の場合(パーマリンクが無効の場合)です。
  • mod_rewrite_rulesまたはrewrite_rulesは何も返しません。これはプラグインがそれらがアクションであってフィルタではないと考えているために何かを返すのを忘れた場合に起こります。

私は$wp_rewrite->mod_rewrite_rules()を呼んでみて、それが何を返すのか確かめます。

1
Jan Fabry

ありがとう@Jan ...私の1週間の問題を解決しました! .htaccessは上書きされ続けました(実際に破損し、繰り返しWP設定で肥大化)..それは私のキャッシュプラグインであると考えましたが、カスタム分類を設定し、flush_rewrite_rules();を使用するのは私のfunctions.phpであることがわかりました... flush_rewrite_rules( false );に設定すると、WP Codexに従って「ソフトフラッシュ」になり、htaccessの問題が解決します。あなたへの百の祝福

0
Jooooooooe