サーバーを移行した後に発生した不具合。トップページや設定、画像は問題なくアクセスできるのに記事にはアクセスできなくなった。

環境

  • 20.04.2 LTS
  • Apache/2.4.41
  • WordPress 5.6.2

対処

ApacheのRewrite機能が動作していないことが原因。

Rewrite機能とは、URLのドメイン以下をパラメーターとして扱うための処理を行う機能。

例えば"http://example.com/test"というURLのとき、「test」というファイルにアクセスするのではなく、「test」を情報としてexample.comに渡すために必要になる。

Apache2でこれを有効にするには、以下のコマンドを走らせれば良い。

a2enmod rewrite

余談

wordpressのルートディレクトリにある.htaccessにrewriteの記述がある

<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>