WordPressのパーマリンクを更新すると403エラーになる時の対処法

サイト運営 WordPress

ローカルにWordPressをインストールし公開サイトのデータを移行した際、パーマリンクを更新すると403エラーになりアクセス不能に。原因と対処法についてまとめました。

パーマリンクを更新すると403エラーに

公開サイトを改修するにあたり、まずはローカルで作業をするためにPCにWordPressを新規インストールしました。

そしてWordPressプラグイン「All-in-One WP Migration」を使って公開サイトのデータをエクスポートし、インストールしたローカルのWordPressへインポート。

インポートが完了すると↑が表示されるので、「パーマリンク構造を保存する」をクリックします。

クリックするとWordPressのログイン画面が開くのでID・パスワードを入力してログイン。

今まではこの後正常にパーマリンク設定画面が表示され、「変更を保存」を2回行えば移行は完了!だったのですが、今回は表示はされるものの、cssが効いていないような?表示崩れの画面に。

おや?と思いつつも下部に「変更を保存」があったのでクリック。すると…

Forbidden
You don't have permission to access this resource.

となり、その後もサイト自体が403エラーでアクセス不能となってしまいました。

原因は.htaccessの記述

原因は.htaccessの記述でした。

パーマリンクを更新するとWordPressをインストールしたフォルダの直下にある.htaccessに7行目の記述が自動で追加されますが、どうやらこれがエラーを起こしているよう。

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

対処法

.htaccessに1行目の記述を追加するとエラーが解消しました。

Options +SymLinksIfOwnerMatch

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

ポイントは # BEGIN WordPress ~ # END WordPress の外側に記述すること。
再度パーマリンクを更新すると動的に.htaccessが変更されますが、内側に記述しているとこの時に記述が削除されてしまいます。

データベース、ローカルファイルのアクセス権、XAMPPの設定の見直し、.htaccessの再生成、プラグインの無効化…さらにはインポートデータに問題があるのかもと別のサイトのデータをインポートしてみたり。しかし同じくパーマリンク設定でエラーに…原因特定までにかなり時間を要しましたが無事解決。

パーマリンク更新で403エラーとなった場合は試してみてください。

同じカテゴリの次の投稿記事はありません