Nginx環境でWordPressの記事URLが404になる時の対処方法

 今回はNginx環境でWordpressを導入した後、記事ページを開いた際に”404 Not Found”のエラーが出る原因と対処方法について解説します。

エラーが出る原因

 エラーが出る条件としてはWordpressの設定で以下のようにパーマリンクを変更した場合が挙げられます。

 このように記事のURLを分かりやすくするためにパーマリンクをデフォルトの”基本”から”投稿名”に変更した際にエラーが出ました。

 エラーが出るのは”投稿名”に変更した場合に限られず、デフォルトの設定以外を選んだ場合は同じくエラーが出ました。

 WordPressの記事URLは実際のファイルではなく、index.phpを通して処理されます。

 しかしNginxの設定で、存在しないURLをWordPressへ渡さず404として処理してしまう場合、記事ページが表示されなくなります。

 ちなみに「?p=6」のようなデフォルトURLの場合は、最初からindex.phpに処理が渡る仕組みになっているため、今回のようなtry_filesの設定の影響は受けにくくなっています。

エラーの対処方法

 まずはNginxの設定ファイルを以下のコマンドで開きます。

sudo nano /etc/nginx/sites-available/default

 中身を確認すると以下のような内容の記述がありました。

try_files $uri $uri/ =404;

 これはNginxが該当のファイルがあるかどうかを確認して、見つからない場合は404を返すという内容になります。

 正しくは該当のファイルがない場合は404を渡すのではなく、Wordpress側に処理を渡す必要がありますので、index.phpへ処理を渡すように書き換えます。(WordPressはphpで動いているため。)

 書き換え内容は以下の通りです。

try_files $uri $uri/ /index.php?$args;

 これで該当のファイルが見つからない場合はWordpress(index.php)側へ処理を渡すようになり、動的処理がされることで、正しいページが表示されるようになるかと思います。

まとめ

 今回の内容で、Nginx自体にはURLの動的処理が行えないことを理解しました。

 デフォルトのURL形式”?p=番号”は一般的なURLとは異なり、記事内容が分かりにくいため、パーマリンクの変更が推奨されます。

 ただし設定を変更すれば、今回のような問題に直面する可能性がありますので、是非参考にしていただければと思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール