Blogger の m=1 リダイレクト問題を回避する

はじめに

本件は、力技で無理やりな方法です。意図しない問題が発生する可能性も多大に存在します。導入する際には、十分注意して実施してください。

問題

Blogger のサイトにモバイル環境でアクセスすると「m=1」がついたページにリダイレクトします。

もともとは、デスクトップとモバイルのサイトを分離して別ページを表示することで環境にあったページを表示することを目的とした機能だったものと推測できます。ですが、現在はレスポンシブなページが一般的であり、デスクトップとモバイルを同一コードで表示することが珍しくありません。

既に過去の遺物となった仕様ですが、変更される兆しはありません。

ここまでの話で終われば、古臭い機能がついているだけで実害はありません。ですが、強制的にリダイレクトが発生することには実害があります。リダイレクトにより、ページの初回表示がリダイレクト分だけ遅延します。これは、わずかですが重要な問題です。

回避策

CDN(Cloudflare 等)でリクエストを書き換えます。

モバイル環境で「m=1」ページにアクセスすれば、この問題は回避できます。そのため、アクセス元がモバイル環境である場合、 CDN で先んじてm=1ページにリクエストを書き換えます。これにより、リダイレクト発生を抑止できます。

Cloudflare
変更ルール(Transform Rules)

[ユーザーエージェント][次を含む][Mobile]
AND
[URL クエリー文字列][等しい][]

クエリー
[Static][?m=1]

※ CDN 関連であれば、 Cloudflare に限らず類似機能があるはずです。
※ URL クエリー文字列が未指定の場合に限定しています。
 クエリー文字列が何らかの外部目的で使用されている可能性を考慮しています。

おわりに

長い間 Blogger の m=1 問題について考えてきました。本件が、現実的な対応策になるのではと考えています。