このブログは日本語ページと英語ページの切り替えや、hreflang情報の生成のために、WordPressのLanguage Switcherというプラグインを使っています。このプラグインの影響でHTTP Status 302 リダイレクトが常に発生するという状況に陥りました。
スポンサーリンク
症状
次のような症状が発生しました。
- sitemap.xmlにアクセスしたときに、時々、トップページにリダイレクトされる。
- 存在するURLにアクセスしているにもかかわらず、HTTP Status 302が返される。
気が付いたきっかけは Google Search Console です。サイトマップにアクセスできず、302というエラー表示が出ていました。
HTTPヘッダの確認
ターミナルから以下の様に実行して、HTTPのヘッダを確認します。
$ curl -I "https://en.techgaku.com/sitemap.xml"
すると、次のように出力されました。
HTTP/2 302 date: Thu, 03 Dec 2020 13:51:27 GMT server: Apache expires: Thu, 19 Nov 1981 08:52:00 GMT cache-control: no-store, no-cache, must-revalidate pragma: no-cache x-redirect-by: WordPress location: https://en.techgaku.com/ content-type: text/html; charset=UTF-8 set-cookie: PHPSESSID=8287fcaf01f2073684a4550f516b7a1e; path=/ set-cookie: lsw_f96b482c_m=en; path=/ set-cookie: lsw_f96b482c_d=en; path=/
本当に HTTP Status 302 が出力されています。
修正方法
試行錯誤の末分かった原因は、WordPressのLanguage Switcherプラグインのセッション開始時の言語認識機能が正しく動作していませんでした。この機能はサーバーと互換性が無いときにはオフにすることができます。私の使っているサーバーとは互換性が無かったようです。
オフにするには、次のように操作します。
- WordPressのダッシュボードで「Languages」を選択する。
- 「Settings」タブを開く。
- 「
- 「Save Settings」ボタンをクリックする。
修正確認
HTTPヘッダを取得して修正されたか確認します。
$ curl -I https://en.techgaku.com/sitemap.xml
次のように出力され、修正できたことが確認できます。
HTTP/2 200 date: Thu, 03 Dec 2020 14:05:15 GMT server: Apache x-robots-tag: noindex cache-control: max-age=0 expires: Thu, 03 Dec 2020 14:05:15 GMT content-type: text/xml; charset=utf-8 set-cookie: lsw_f96b482c_m=en; path=/ set-cookie: lsw_f96b482c_d=en; path=/
投稿者プロフィール

- macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
- アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++をよく使っています。開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。
最新の投稿
NoneCategorized2021.02.25ブログ統合(予定)のお知らせ
アプリ開発2021.01.09SwiftUIの2つのライフサイクル
Web開発2020.12.03Language Switcher で発生する 302 リダイレクトの修正
Web開発2020.12.01WordPressのXML Sitemapsプラグインを動かす