2026年5月22日
2026年5月22日
WordPressのHTTP 410 Goneエラーを処理する方法
はじめに
HTTP 410 Goneエラーは、ウェブページやリソースが存在しなくなったことを示すHTTPステータスコードです。WordPressサイトでこのエラーが発生すると、特定のコンテンツへのアクセスができなくなることがあります。この記事では、原因と解決策について詳しく解説します。
症状・背景
- 旧コンテンツの削除後
- プラグインやテーマの更新後に不具合が発生した場合
- データベースのエントリーやファイルの誤削除後
- マルチサイト設定でサブサイトが削除された場合
手順・設定方法
ステップ1: エラーログの確認
# ホスト名やドメイン名に適切な値を指定します。
ssh user@your-hostname.com
# SSHログイン後、エラーログファイルを開きます。ここではApacheを使用していることを前提としています。
sudo tail -f /var/log/apache2/error.log
# 410 Goneエラーが記録されているかどうか確認します。
ステップ2: ファイルとデータベースの整合性チェック
# WordPressサイトのルートディレクトリに移動します。
cd /path/to/your/wordpress/root
# `.htaccess`ファイルを編集して、存在しないページへのアクセスをロギングするための設定を追加します。
nano .htaccess
# 以下のような内容を追記します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [E=HTTP_410:1]
<If "%{ENV:HTTP_410}">
Header set Status "410 Gone"
</If>
ステップ3: カスタムプラグインの使用
# WordPressプラグイン管理ページから「Custom 410 Gone Redirects」などの関連プラグインを探します。
wp plugin install custom-410-gone-redirects --activate
# プラグインを有効化したら、設定画面を開きます。
wp admin menu
# 特定のURLパターンや旧ページへのアクセスに対して410 Goneリダイレクトを作成します。
ステップ4: 既存データベースエントリーの修正
# phpMyAdminまたはMySQLクライアントを使用してWordPressデータベースに接続します。
mysql -u root -p
# `wp_posts`テーブルから削除されたポストを探すSQLクエリを実行します。
SELECT * FROM wp_posts WHERE post_status = 'trash';
# 適切なアクションを行います。例えば、不要なデータは完全に削除し、必要であれば復元します。
DELETE FROM wp_posts WHERE ID = 12345;
注意事項
- バックアップの作成: 改変前に必ずバックアップを取ること。
- リダイレクトの適切な設定: 404 Not Foundと誤って設定しないように注意すること。
- セキュリティ上の注意: ファイルやデータベースへのアクセスは適切な権限を持つユーザのみが行うこと。
- パフォーマンス/運用上の注意: 無駄なリダイレクトは回避し、エラーの原因を特定した上で解決すること。
まとめ
1. ログファイルの確認: エラーログから410 Goneエラーが発生している箇所を見つけます。
2. .htaccessの修正: 不要なURLへのアクセスを抑止し、適切に処理する設定を行います。
3. プラグインの活用: カスタムプラグインを利用して効率的に410 Goneエラーを管理します。
4. データベースの整合性確保: データベース内の不要なエントリーを削除し、適切に整えます。
5. 保守と監視: 定期的なバックアップをとり、サイトのパフォーマンスを監視します。
関連記事: