Language Switcher で発生する 302 リダイレクトの修正

このブログは日本語ページと英語ページの切り替えや、hreflang情報の生成のために、WordPressのLanguage Switcherというプラグインを使っています。このプラグインの影響でHTTP Status 302 リダイレクトが常に発生するという状況に陥りました。

スポンサーリンク

症状

次のような症状が発生しました。

  1. sitemap.xmlにアクセスしたときに、時々、トップページにリダイレクトされる。
  2. 存在する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プラグインのセッション開始時の言語認識機能が正しく動作していませんでした。この機能はサーバーと互換性が無いときにはオフにすることができます。私の使っているサーバーとは互換性が無かったようです。

オフにするには、次のように操作します。

  1. WordPressのダッシュボードで「Languages」を選択する。
  2. 「Settings」タブを開く。
  3. 「 
  4. 「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++をよく使っています。開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。
スポンサーリンク
最新情報をチェックしよう!
>現役のプログラマーが書くプログラミング情報

現役のプログラマーが書くプログラミング情報

日々の開発の中での学びや分かったこと、調べたことなどを書いていくブログです。

CTR IMG