WordPressのパーマリンクで404 Not Found

シェアする

  • このエントリーをはてなブックマークに追加

WordPressのパーマリンクで出た404 Not Foundというエラーを解決しました。

 

スポンサードリンク

WordPressのパーマリンクで404 Not Found

WordPressのパーマリンクでデフォルトではない設定を行っている場合、以下のように表示されることがあります。

404 Not Found

The requested URL /archives/1347 was not found on this server.

 

image

 

スポンサードリンク

パーマリンク404 Not Found対策

まずキャッシュを削除してから、パーマリンク設定を「デフォルト」に戻してうまく表示できるか調査してみます。

image

デフォルトに戻してみても表示されない場合は、ファイルが壊れているとか、もっと抜本的な問題である可能性があります。

デフォルトに戻してみて表示される場合は、原因として考えられることは次の2点です。

1. /var/www/wordpress/.htaccessの設定が間違えている

私の場合、/var/www/wordpress/.htaccessの設定は以下の通りでした。
これは正しい記述です。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]

 

/var/www/wordpress/.htaccessの設定がこんな感じだと

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

以下のようなエラーが出ます。

[Thu Oct 30 14:36:38.915397 2014] [core:error] [pid 4315] [client 192.168.141.135:41519] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://192.168.141.135/

2. /etc/httpd/conf/httpd.confにて<Directory>セクションがAllowOverride Noneとなっている

/etc/httpd/conf/httpd.confを調べてみると次の事がわかりました。

Apache 2.4からRelax accessという項目が増えており、/var/wwwの設定がAllowOverride Noneとなっておりました。
そこでAllowOverride NoneをAllowOverride Allと変更ししてApacheを再起動します。

#
# Relax access to content within /var/www.
#
<Directory "/var/www">
#   AllowOverride None
AllowOverride All
# Allow open access:
Require all granted
</Directory>

 

無事にパーマリンクを「数字ベース」に設定しても表示されました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

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