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

WordPress

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

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

背景

サーバーをレンタルして、サイトを立ち上げました。サイトの WordPress の管理画面でパーマリンクの設定をすると、WordPress は、本体が入っているディレクトリにある .htaccess を書き換えようとします。
サイトの設定で、設定ミスをしやすそうな箇所ですし、WordPress のバージョンと設定の組み合わせによっては動作が異なる(バグがある?)ようです。
そこでまずは、WordPress が正常に動作しているかどうか確認する方法をまとめておきます。

パーマリンク設定などがうまく動かず、サーバ側の設定が悪いのか、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 が書き込みをしていることを確認できます。(正常動作時)

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

上記の④で、日付が更新されなかったら、書き換えが正常に機能していません。(異常)
一つの可能性として、.htaccess を編集するパーミッションが WordPress に与えられていない可能性があります。
②で、# ls -al を実行したとき、WordPress の各ファイル(*.php)の権限と、.htaccess の権限が同一になっていることを確認してください。

.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 となり、- rw- — rw- に対応しています。
chmod 606 とすることで、最後の other (Apache) に rw- (ファイルの読み書き)の権限を付与する、という意図です。
・ 権限の設定後、ls -al コマンドを実行し、ファイルのパーミッションが -rw—-rw- (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】

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