WordPressで記事を閲覧するときに、404 エラー(Not Found)が発生するときの対処法を記します。
すでに既出感は半端ないですが、htaccess の内容まで載せているサイトはあまりなかったので記事にしてみました。
事象
トップページや記事の一覧からはさわりの文章(ディスクリプション)がみえているのにタイトルをクリックして記事を閲覧しようとすると 404 Not Found が発生するという事象です。
原因
以下の2つの状況が一致すると、この事象が発生します。
- ダッシュボード>設定>パーマリンク設定 内の共通設定が「基本」以外に設定されている
- .htaccess が有効になっていない(AllowOverride ディレクティブが None に設定されている)
両方とも、一致しないよ~という人は別の原因があるかもしれないので、他の情報をさがしてください。。。
ふたつの条件を満たすとなぜこの事象が起こるのか
↑の原因1のパーマリンク設定を変更すると、どれに設定したかによって .htaccess が書き換えられます。
「基本」に設定されている場合は、以下となっています。コメントのみなので .htaccess は特に設定されていないという状態です。
1 2 3 |
# BEGIN WordPress # END WordPress |
ダッシュボードから「基本」以外に変更をすると、自動で以下のように RewriteRule が記述されました。
1 2 3 4 5 6 7 8 9 10 11 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
パーマリンク設定が「基本」以外に設定されている場合のサイトURLは .htaccess で都度書き換えられているのですね。だから、.htaccess が読み込めないとURLが正しく認識されずに 404 Not Found が発生するということです。
逆に、パーマリンク設定が「基本」に設定されている場合は、URLを都度書き換える必要がないので、.htaccess が読み込むことができなくてもエラーは発生しないということです。
対処法
原因がすでに答えになっていますが、.htaccess を有効にするだけです。
Apache の設定ファイルで、AllowOverride を None → All に変更します。ディレクトリはWordpressのインストールディレクトリです。
1 2 3 4 5 6 7 |
<Directory "/var/www/wordpress"> : AllowOverride None ↓ AllowOverride All : </Directory> |
まとめ
WordPressで記事を閲覧するときに、404 エラー(Not Found)が発生するときの対処法を紹介しました。
対処法は記事の通りですが、自分で検証してみるとより理解が深りますので時間が許す人はやってみてください。
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓