WordPressのECプラグイン「Welcart(ウェルカート)」を停止・削除した際、サイトにアクセスできなくなり「501 Not Implemented」エラーが発生するトラブルがあります。
本記事では、このエラーが発生する根本的な理由と、初学者でも確実に復旧できる解決ステップをまとめました。
目次
1. そもそも「501エラー」とは?なぜWelcart削除で起きる?
通常、プログラムのエラーは「500 Internal Server Error」になることが多いですが、特定の条件下では「501」が返されることがあります。
今回のケースで関係していた要因は主に以下の3つです。
| 要因 | 内容 |
|---|---|
| ① テーマ内の独自コード | 子テーマ(functions.php やテンプレート)にWelcart専用の関数が残っており、本体削除によりエラーが発生。 |
| ② サーバーのWAF仕様 | 一部レンタルサーバー(ロリポップ!等)では、不正検知時に403ではなく501を返す仕様がある。 |
| ③ ブラウザに残ったCookie【最大の罠】 | ブラウザにWelcartのセッションCookieが残ったまま通信を行い、サーバー側に弾かれ続ける。 |
2. トラブル解決までの完全手順(5つのステップ)
STEP 1:子テーマ内のWelcartコードを削除する
Welcartプラグインを無効化すると、Welcartが提供していた関数(usces_... 等)が存在しなくなります。テーマ側でそれらを呼び出しているとPHPが停止します。
以下のファイルに対象のコードが残っていないか確認・削除します。
functions.php- 例:
usces_order_discount関連のフックや関数($usces->cart->...など)
- 例:
- テンプレートファイル(
template/やpost/フォルダ配下)- 例:
usces_is_cat_of_item()、usces_the_item()などの関数呼び出し
- 例:
STEP 2:サーバーのWAFを一時的にOFFにする
サーバーのセキュリティ機能(WAF)が、Welcartの通信やCookieを誤検知してブロックしているケースがあります。
- サーバーの管理画面(コントロールパネル)にログイン。
- WAF設定を開き、一時的に「無効(OFF)」にする。
- これでアクセス可能になるかを確認する(復旧後に必要に応じて除外設定を行いONに戻す)。
STEP 3:.htaccess の確認
.htaccess にプラグイン特有のリダイレクトやアクセス制限が書き込まれていないか確認します。
通常は、以下のWordPress標準記述のみになっていれば問題ありません。
# BEGIN WordPress
<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>
# END WordPress
STEP 4:シークレットモードで動作確認する(超重要)
ここが原因切り分けの最重要ポイントです。
- シークレットモード(プライベートブラウズ)で開いてみる
- 正常に表示された場合: サーバーやプログラムは完全に直っています。原因はあなたのブラウザ(Cookie)にあります。
- エラーのままの場合: サーバー設定やテーマのコードにまだ問題が残っています。
STEP 5:通常のブラウザで「Cookieとサイトデータ」を削除する
シークレットモードで見られるのに、通常のブラウザで見られない場合、スーパーリロード(Ctrl + F5)では直りません。
スーパーリロードは「画像やCSSのキャッシュ」を更新するだけで、「Cookie(ログイン・セッション情報)」は消えないためです。
Chromeでの個別データ削除手順
- エラーが出ているサイトのタブを開く。
- アドレスバー左端の 「サイト情報アイコン(鍵マークや調整バーのアイコン)」 をクリック。
- 「Cookie とサイトデータ」 をクリック。
- 「デバイス上のサイトデータを管理」 を選択。
- 表示されたドメイン横の ゴミ箱アイコン を押して削除し、「完了」をクリック。
- ページを再読み込み(F5)する。
3. まとめ
- Welcartを削除する際は、子テーマ内の独自関数(
usces_...)もセットで削除する。 - エラーが出たら、まずシークレットモードで開き「サーバー側の問題」か「ブラウザ側の問題」かを切り分ける。
- スーパーリロードで解決しない場合は、個別Cookie・サイトデータの削除を実行する。
