- 実践 WordPress ホーム
- 開発者向け
- WP-CLI
WP-CLI の wp rewrite flush --hard を実行しても .htaccess ファイルが更新されない問題

WordPress のコマンドラインツール WP-CLI は中〜上級者が WordPress サイトを効率的に管理するのに有用なツールです。
ここでは WP-CLI で「 wp rewrite flush --hard コマンドを実行しても .htaccess ファイルが更新されない問題」について説明します。
確認時のバージョン
- WP-CLI
2.10.0
wp rewrite flush --hard コマンドとは?
wp rewrite flush --hard コマンドは WordPress のリライトルールをリセットし、その変更を .htaccess ファイルに反映させるものです。
--hard オプションは .htaccess の書き換えを行うことを意味します。
発生する問題
wp rewrite flush --hard コマンドを実行しても .htaccess ファイルが更新されません。

原因と解決策
さまざまな原因が考えられます。
A. WP-CLI の設定の不足
コマンド実行時に次のような出力がされる場合は WP-CLI の設定が不足していることが原因です。
これを解消するには WP-CLI の設定( wp-cli.yml など)で apache_modules に mode_rewrite を追加する必要があります。
wp-cli.yml:
このことは 公式リファレンス でも説明されています。
To regenerate a
.htaccessfile with WP-CLI, you’ll need to add the mod_rewrite module to yourwp-cli.ymlorconfig.yml. For example:
WP-CLI の設定ファイル wp-cli.yml についてはいくつかの設置パス・ファイル名のパターンが可能です。
詳しくは公式のリファレンスを確認してください。
B. .htaccess ファイルに書き込み権限が無い
コマンド実行時に次のような成功メッセージが表示されるのに .htaccess ファイルが更新されない場合もあります。
この場合はいくつかの原因が考えられます。
まず考えられるのは .htaccess ファイルに書き込み権限が無いパターンです。
この場合の解決策は .htacess ファイルに書き込み権限を付与することです。
WP-CLI を実行するユーザーと .htaccess ファイルの所有者が異なる場合は、所有者の変更が必要なこともあります。
例:
C. .htaccess が存在せずディレクトリに書き込み権限が無い
B と似ていますが、元々 .htaccess ファイルが存在せず WordPress インストールディレクトリに書き込み権限が無い場合も .htaccess ファイルが作成されません。
この場合の解決策はインストールディレクトリに書き込み権限を追加することです。
A B C のどのパターンでも、 .htacess の書き込み以前のリライトルールの更新が成功すれば「 Success: Rewrite rules flushed. 」というメッセージが出力されてしまい、また .htaccess の書き込みに失敗してもわかりやすいメッセージが出力されないため、原因を自分で探す必要があります。
A B C の他にも原因となりうるものはいろいろありますが、おそらくこの 3 つが最もよくある原因では無いかと思います。