こんにちは、Ryohei(@ityryohei)です!

本記事では、WordPressでトップページ以外が404エラーで表示されない場合の解決方法を2パターンご紹介しています。

404エラーでページが表示されない……どうすればいいの?

すべてのエラーに当てはまるわけではないですが、該当する方は参考にしていただければと思います。

では、解説していきます。

筆者は「CendOS7」の環境で検証しております。予めご了承ください。

htaccessがない

WordPressは適切な権限を与えると、自動で.htaccessの作成や更新をしてくれます。ただ、権限が適切でない場合はファイルを作成することができないため、.htaccessが吐き出されずに存在しない状態になります。その場合は自身で.htaccessを作成する必要があります。

下記のようなディレクトリ構造だと仮定します。

/var/www/html/sample/wordpress

wordpress」がサイトのルートディレクトリの場合は「wordpress」ディレクトリ配下に.htaccessを作成します。

/var/www/html/sample/wordpress/.htaccess

後はパーマリンク設定の最下部に.htaccessに記載すべき値が表示されているはずですので、画面の指示に従って.htaccessを更新してください。

パーマリンク設定画面に何も表示されていない場合は下記をコピーしてご利用ください。

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

以上で.htaccessの作成は完了です。ページの表示をご確認ください。

htaccessが作成されているがページが表示されない

.htaccessは作成したけど、ページにアクセスすると未だ404エラーが表示される……

そういった場合は、サーバー側で.htaccessの設定が有効になっておらず、使用できない状態の可能性があります。そのため、自身でサーバーの設定ファイルを更新する必要があります。

apacheの設定ファイルを更新します。まずは設定ファイルである「httpd.conf」を探します。

下記のコマンドを実行します。

find / -name httpd.conf

実行結果が表示されます。大体下記の場所にあると思います。

/etc/httpd/conf/httpd.conf

出力されたディレクトリまで移動してエディター(vi、vim等)を起動します。

.htaccessを使用するためには「AllowOverride」を「Noneから「Allに修正する必要があります。

既存の「AllowOverride None」となっている部分をコメントアウトして、直下に「AllowOverride All」を追加します。

修正後は下記のようになります。

<Directory />
    # AllowOverride None
    AllowOverride All
</Directory>

上記もしくは下記の部分どちらかを修正するだけ問題ないかと思います。

<Directory /var/www/html>
    # AllowOverride None
    AllowOverride All
</Directory>

追記したら設定ファイルの文法に問題ないかチェックします。

apachectl configtest

Syntax OK」と表示され、文法に問題がなければ設定ファイルを再読み込みします。

systemctl reload apache

以上で、.htaccessが有効になります。ページの表示をご確認ください。

最後に

普段レンタルサーバーをしているとサーバー側の設定を意識する必要はほとんどないですが、AWSやAzure、GCPのようなクラウドサービスやVPS上でサーバーを構築する場合は設定を一から入れる必要があります。

設定を忘れた場合に本記事のようなエラーが起きやすいと思いますので、そのようなときにご活用いただければ幸いです。

以上、WordPressでトップページ以外が404エラーで表示されない場合の解決方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。