パーマリンク設定を変更したら404エラーでWebサイトが開かなくなった【WordPress】

こんにちわ。ますの(@masno_soy)です。

自分で作成したWordPress用のWebサーバ(もといLAMPサーバ)なのですが、初期設定では何かと不足があるようで細かい挙動でおかしな動きがちらほらと…。
もっとスマートな仕事が出来るようになりたいものであります。

さて、今回はWordPressで「パーマリンク設定を変更したらプレビューや保存したページが開かない」「404エラーが出るようになった」という問題が起きたので備忘録です。

サーバ側の設定ファイル:httpd.confの「mod_rewrite」が有効になっているか??

今回は自前で作ったWebサーバで、CentOS 7:Apache2.4系となります。
このブログは「ロリポップ!レンタルサーバー」のWebサーバ契約で動かしているので意識したことなかったのですが、AWSなどで自前で作った場合は設定が必要なようですね。

  1. 「LoadModule rewrite_module modules/mod_rewrite.so」を追記
  2. 「AllowOverride All」をWordPressインストールフォルダに追記

「LoadModule rewrite_module modules/mod_rewrite.so」がhttpd.confに記載されていないとWordPressの「.htaccess」でmod_rewriteが機能せず、パーマリンク設定を変更した際に書き換えをしてくれないそうな。

また、「AllowOverride All」を追加することで各WordPressフォルダに格納されている「.htaccess」を利用できるように許可設定をする必要があるのでこちらも追記します。

# vi /etc/httpd/httpd.conf
※記載が無ければ下記を追記、[#]でコメントアウトされている場合は[#]を消す。

LoadModule rewrite_module modules/mod_rewrite.so

------------------------------------------------
※各自の環境に合わせてDirectoryは変更します。
 httpd.confの「DocumentRoot」であることが多数

<Directory "/var/wwwhtml/wp-folder">
    AllowOverride All
</Directory>

httpd.confに追記が完了したら、Apacheの再起動をします。
再起動後に変更内容が反映されるようになります。

systemctl restart httpd.service

サーバ側の設定は以上で完了です!

WordPress側の設定ファイル:.htaccessファイルに「Rewrite」が記載されているか?

続いて、WordPress側に保存されている「.htaccess」ファイルの設定を確認します。
保存場所はWordPressインストールフォルダの直下になります。
もし存在しない場合は作成しましょう

なお、わたしの自作環境は「.htaccess」はちゃんと入っていたので入力無しでした。

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END
「.htaccess」でRewriteルール指定のフォルダ階層を間違えるとどえらいことになりますゆえ、変更する際はちゃんとコピーを取ってから切り戻しが出来るようにやってほしいのであります!

以上で設定が完了です。
パーマリンク設定を変更後にエラーが出てアクセス出来なかったページへ飛んでみましょう。

正常にアクセス出来るようになってるうううう!!!
と喜びに溢れると信じています。

自前でサーバを作るときに、こういった細かなチューニングを事前にできるような人間になりたいであります。精進あるのみです。

最新情報をチェックしよう!