パーマリンクが動かないとき【WordPress & 投稿名】

WordPress

WordPress で記事をいくつか入れていくと、記事が増える前に、記事のリンク先(パーマリンク、パーマネントリンク=記事ごとに固有のリンク名)をデフォルトの「基本」(数字)ではなく、「投稿名」等に変更したくなると思います。

WordPress でパーマリンク関連の設定を変えたところ動きがおかしくなりました(仕様変更? バグ?)ので、状況と対応手順をまとめておきます。

構成:CentOS 8.0、WordPress 5.5、Apache, MySQL, PHP

状況

WordPress や Linux をバージョンアップすると、または最新版の組み合わせにすると、ネットに出ている情報どおりには動かず、いくつか試行錯誤が発生しました。具体的には、記事リンクをクリックすると404 エラーが出るなど、その他、動作がおかしな状態になりました。
結構、はまりましたが、以下の手順で1つずつ動作を確認していったところ、動くようになりましたので、ポイントをまとめておきます。
Linux, Apache, WordPress のバージョンアップが常時あり、それぞれの設定が絡みますので、確認手順がやや長くなります。1つずつ動作確認をしてつぶしていけば、動くと思います。急がば回れです。

手順

① WordPress ダッシュボードの「設定」→「パーマリンク設定」で、(例えば)「投稿名」を選択し更新する。
② 記事を1つ選んで編集画面とし「パーマネントリンク」の「編集」ボタンをクリックして、日本語表記が英語表記となるよう書き換えて保存する。
③ 保存後、②で作成した記事リンクが正常に飛ぶか確認する。
リンクが正常に飛ぶのであれば、⑦に行く。正常に動作しない場合は、④~⑥を順次、確認する。

④ WordPress 上でパーマリンク設定を変更/戻すなどして保存し、.htaccess ファイルの作成日時が保存時の日時に更新されることを確認する。
 .htaccess の自動更新を確認する方法

⑤ PHP を 7.4 以降にバージョンアップする。バージョンアップしないと動きませんでした。
PHP のバージョンアップ手順 【Linux】

⑥ Web サーバー Apache の設定ファイル httpd.conf が適切に記載されているか確認する。
「投稿名」でパーマリンク設定をする際の httpd.conf のチェックポイント

⑦ ①で設定したパーマネントリンクで正常に記事が表示されたら、すべての記事についてパーマネントリンクが英語表現となるよう修正し、正常にリンクが機能することを確認する。

ポイント:バージョンアップ時に組み合わせを確認していない?

WordPress のバージョンが 5.5 以降に更新され、ネットで出ている古い情報をそのまま実行すると動きが違っていてハマりました。
WordPress の仕様変更により、パーマリンクを「基本」以外のカスタムで設定するには post_name (投稿名)か post_id が必須となっているようです。
特に ④、⑤、⑥がポイントですね。ひとつでも動かないものがあると、動作がおかしい状態となりました。

推測ですが、WordPress などの各プログラムの最新版をリリースするとき、LAMP (Linux, Apache, MySQL, PHP)の最新環境では動作確認をしているけれども、派生となる環境(MariaDB など)や旧バージョン(CentOS 7など)との組み合わせについては動作確認をしていない印象がありますね。動作確認されていないかのような動きになっています。

まとめ

パーマリンク設定を変更する場合について確認手順をまとめました。Google 推奨の「投稿名」でパーマリンクを設定することをおすすめします。

関連リンク
・ パーマリンクのおすすめ【WordPress】
・ 記事リンクで「NOT FOUND 404」と表示されたとき

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