.htaccess の動きがおかしいとき 【WordPress】

WordPress

WordPress を使ってサイトを作成すると、設定変更時に WordPress は .htaccess を書き換える動作をします。
サーバ上で .htaccess の書き換えが正常に動作しているか疑わしいとき、動作確認する手順についてまとめておきます。

環境: レンタルサーバー(ConoHa VPS)、CentOS 8.0、WordPress 5.X、Cocoon

背景

サーバーをレンタルして、WordPress でサイトを作りました。
WordPress の管理画面でパーマリンクの設定をすると、WordPress は、本体が入っているディレクトリにある .htaccess を書き換えようとします。
サイトの設定時に、設定ミスが生じやすそうな箇所です。また、WordPress のバージョンによっては、動作が異なる(バグがある? 仕様変更になった?)ようです。

そこで、WordPress が .htaccess と連携して動作する部分について、正しく動作しているかどうか確認する手順をまとめ、公開しておくことにします。

パーマリンク設定などがうまく動かず、サーバ側の設定が悪いのか、WordPress 側の設定が悪いのか、原因箇所を切り分けたいときなど、参考にしてみてください。

.htaccess が更新されるかどうか確認する方法

サーバのドキュメントルートを確認する

① サーバのコンソールを起動します。コンソール上で WordPress が入っているフォルダに移動します。
Apache のデフォルトのドキュメントルートに WordPress が入っているのであれば、フォルダは “/var/www/html/” になると思います。
# cd /var/www/html/

② すべてのファイルを表示します。
# ls -al

・ ここで、”.htaccess” がない場合は、”.htaccess” 自体が作成されていません。作る必要があります。WordPress のインストール時の手順を確認してください。
・ ”.htaccess” がある場合は、作成日時を確認しておきます。以下で、作成日時が更新されることを確認します。

WordPress 管理画面で設定を変更してみる

③ 別途、ブラウザで、サイトから WordPress の管理画面にログインします。
続いて、「ダッシュボード」→「設定」→「パーマリンク設定」をクリックします。
④ 同画面の「変更を保存」を(何度か)クリックします。
→ この後、サーバの画面に戻って、②の ls -al を再度実行します。
WordPress で「変更を保存」したのち、サーバ上で .htaccess の日付が更新されていたら、書き換えは正常動作しています。
⑤ 正常動作している場合、.htaccess の内容が書き換えられています。そこで、以下で変更内容を確認しておきます。
# vi .htaccess

・ .htaccess のファイルの中で、# BEGIN WordPress ~ #END WordPress という行が追加されていると思います。
WordPress の管理画面側でパーマリンクの設定をすると、この範囲に WordPress が書き込みをしていることを確認できます。(正常動作時)
→ 確認が終わったら、vi エディタを終了します。([esc] → “:q!” → [enter] )

.htaccess の書き換えがされていないとき(異常時)

上記の④で、日付が更新されない場合は、書き換えが正常に機能していません。(異常)
一つの可能性として、.htaccess を編集するパーミッションが WordPress に与えられていない可能性があります。
②で、# ls -al を実行したとき、WordPress の各ファイル(*.php)の権限と、.htaccess の権限が同等になっていることを確認してください。
各ファイルの所有者、グループの部分が、”apache apache” のような表示になっていると思います。
また、”-rwx … ” となっているパーミッション設定の部分について、違いがないか確認してください。

.htaccess のパーミッションの変更方法

.htaccess の権限が間違っている場合は、例えば、以下のコマンドでパーミッションを変更すると動くと思います。

設定例
# chmod 606 .htaccess
# ls -al
・ ここで、606 の3つの数字は、それぞれ、3種類のユーザー(user, group, other)の権限に対応しています。
分解すると 6 0 6 = 4+2+0 0+0+0 4+2+0 となり、”- r w –  – – –  r w -” に対応しています。
chmod 606 とすることで、最後の other (apache) に rw- (ファイルの読み書き)の権限を付与する、という意図です。
・ 権限の設定後、ls -al コマンドを実行し、ファイルのパーミッションが – r w –  – – –  r w – (4+2+0 0+0+0 4+2+0)に設定されたことを確認し、④を再確認します。

→ この後、WordPress 側でパーマリンク設定を変更(保存)し、.htaccess が書き換わるようになったら、設定成功です! 設定と動作確認の完了です。

留意点

なお、パーミッションの設定はセキュリティ管理が絡みますので、使用しているサーバ環境で問題がないかどうか、一応のご確認をお願いします。(上記で chmod 606 とした、606 の設定が本当に妥当かどうか。)

また、現在、WordPress のバージョン 5.5 以降では、パーマリンク設定の仕様が以前より変更となっているようです。 私の環境では、バージョン 5.5 において、パーマリンク設定画面で「カスタム構造」を選択し %postname% を設定すると、404 エラーが出るようです。バージョン依存のバグがあるような挙動になっています。
対症療法とはなりますが、(a) %postname% を使用しない、(b) パーマリンクの設定を変えてみて、書き換えが正しく実行できる設定を使うことで、対応は可能と思います。

まとめ

WordPress で .htaccess の挙動がおかしいとき、.htaccess が書き換わる部分について、動作確認をする手順、問題個所を切り分ける手順についてまとめました。

パーマリンク設定や .htaccess の設定あたりでうまく動かないとき/挙動がおかしいとき、上記の手順で問題個所の切り分けをしてみてください。
ネットを探しても、正しく動作していることをどうやって確認するのか、具体的な切り分け手順について情報が見つかりませんでした。そこで、ポイントをまとめ、公開しておくことにします。

他にも、動作確認の手順やコマンドなどを以下の関連リンクにまとめています。もしも関心があるようでしたら、参考にしてみてください。

関連リンク
・ トップページのレイアウトが崩れたとき【WordPress】
・ 「返答が正しい JSON レスポンスではありません。」と表示されたとき
・ Linux の権限設定と WordPress との関係【Webサーバー】
・ パーミッション関連でよく使うコマンド【Linux】

タイトルとURLをコピーしました