技術情報ログ

WordPress 404 Not Foundになりリンクがつながらない

さくらインターネット VPSにApache、PHP、MySQLをインストールしてWordPressを設置した。
ダッシュボードは正常に動作し、ブログも生成される。

しかしリンクをクリックすると404 Not Foundになってしまった。

こんなときはURLのハンドリングがうまくいっていないことが多い。
調べてみるとパーマリンクの変更時にも同様の現象に遭遇する人が多いようだ。


なぜこのエラーが出るのか
こういうときは、次の項目を確認しよう。

  1. mod_rewriteの設定
  2. httpd.confのAllowOverrideの設定
  3. .htaccessのRewriteRuleの設定
  4. .htaccessのパーミッション

これらのいずれかの設定がおかしいと次のようなことが起こる。

(1) .htaccessによるOverrideが行われない

(2) .htaccessに書き込んだRewriteRuleが読み込まれない

(3) mod_rewriteに認識されない

(4) URLが正しく処理されず404 Not Foundになる

こうやって404 Not Foundが発生する。


見直すポイント
確認ポイントを順番に説明する。

まずhttpd.confでmod_rewriteをLoadする設定になっているか確認しよう。

↓のLoadModuleがコメントアウトされていないか確認しよう。

LoadModule rewrite_module modules/mod_rewrite.so

次に、httpd -Mコマンドでmod_rewriteがHTTPDに読み込まれているか確認しよう。

[user@localhost ~]$ sudo httpd -M
Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
authz_host_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
mime_module (shared)
status_module (shared)
autoindex_module (shared)
info_module (shared)
negotiation_module (shared)
dir_module (shared)
alias_module (shared)
substitute_module (shared)
rewrite_module (shared)
proxy_module (shared)
proxy_balancer_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)
suexec_module (shared)
cgi_module (shared)
version_module (shared)
php5_module (shared)
Syntax OK

そして.htaccessのOverrideが有効になっているか確認しよう。httpd.confで、対象のディレクトリがAllowOverride Noneになっていないだろうか?

これが無効になっていては、.htaccessファイルの内容がロードされない。

これらが正しいと確認できたら、あとは.htaccessがWebサーバ実行ユーザの権限で読み込みできるようになっているか、RewriteRuleが正しいものになっているかを見直そう。

Apacheの設定を変更したらリスタートなり設定の再読み込みなりを忘れずに!


スポンサードリンク