Extension:MobileFrontend/ブラウザー自動検出の設定
この文書は、サイト管理者がモバイルサイト(利用者がモバイルデバイスからサイトを訪問した際、自動的にデスクトップビューではなくモバイルビューへリダイレクトされるような MediaWiki の拡張)を有効化する方法について説明します。
組み込みの自動検出
コミット 5a1867e 以後、MobileFrontend は最小限の設定による自動デバイス検出に対応しています。
あなたがしなければならないことは
$wgMFAutodetectMobileView = true;
を LocalSettings.php に設定することだけです。
これが最も簡単な方法ですが、ほぼ確実に最低限の機能が使えるようになるでしょう。 この方法はフロントエンドキャッシュに適合しません。これは、キャッシュにモバイルビューとデスクトップビューとの違いを識別させる方法を提供しないためです。
Apache Mobile Filter (AMF)
コミット 0fb2c72d 以後、MobileFrontend はデバイス検出のため Apache Mobile Filter (AMF) に対応しています。 あなたは Apache webサーバを使用していなければなりません。 AMF のセットアップ・構成設定の説明に従えば、「そのまま動く」はずです。 この機能は組込みの自動検出に非常に似ていて、また特別な設定なしではフロントエンドキャッシュに適合しないでしょう。
Web サーバ/プロキシキャッシュによるデバイス検出
いくつかのリバースプロキシ(Varnish 等)は、MediaWiki にモバイル版が必要かどうかの情報を提供することができます。これにより、キャッシュフレンドリーな自動検出が可能となります。
Varnish を利用した検出:モバイルサイトを別ドメインにする場合
Varnish を利用していて、wiki.example.com でデスクトップ版を、m.wiki.example.com でモバイル版を表示したい場合があるとします。 その場合、次のようにします。
sub vcl_recv {
remove req.http.x-wap; # リクエスト送信者が任意で X-WAP ヘッダを提供することを許可しません
if (req.http.host == "m.wiki.example.com") { # モバイル版のドメイン
set req.http.host = "wiki.example.com"; # デスクトップ版のドメイン
set req.http.x-wap = "no";
}
}
sub vcl_hash {
# ページのモバイル版を別々にキャッシュします。
#
# ノート:x-wap ヘッダは唯一の値をもつべきです(値が存在する場合)。そのため vcl_recv() は利用者が提供した X-WAP ヘッダを除去する必要があります。
hash_data(req.http.x-wap);
}
LocalSettings.php は以下を含む必要があります:
$wgMobileUrlTemplate = 'm.wiki.example.com'; // モバイルサイトのドメイン
多くのウィキがある場合、以下の構文が便利かもしれません:
$wgMobileUrlTemplate = '%h0.m.%h1.%h2';
ここで "%h<#>" は $wgServer
のホストネームのセグメントに対応します。
すなわち、$wgServer = 'en.wikipedia.org';
の場合、%h0 は "en"、%h1 は "wikipedia"、%h2 は "org" です。
この場合、上記の $wgMobileUrlTemplate
はモバイル URL を "en.m.wikipedia.org" のように展開します。
これはウィキメディア財団とウィキペディアのようなプロジェクトで特に役立ちます。それらは <言語コード>.wikipedia.org
というテンプレートに従うため、モバイルドメインは常に <言語コード>.m.wikipedia.org
のように見えます。
$wgMFAutodetectMobileView = false;
)。Varnish を利用した検出:デスクトップ/モバイルサイト共に同じドメインにする場合
Varnish を利用していて、wiki.example.com にまったく同じ URLで("m.wiki.example.com" のような追加のドメインを作ることなく)デスクトップ/モバイル版を表示させたい場合があるとします。 その場合、次のようにします。
sub vcl_recv {
remove req.http.x-wap; # リクエスト送信者が任意で X-WAP ヘッダを提供することを許可しません
if(req.http.User-Agent ~ "(?i)^(lg-|sie-|nec-|lge-|sgh-|pg-)|(mobi|240x240|240x320|320x320|alcatel|android|audiovox|bada|benq|blackberry|cdm-|compal-|docomo|ericsson|hiptop|htc[-_]|huawei|ipod|kddi-|kindle|meego|midp|mitsu|mmp\/|mot-|motor|ngm_|nintendo|opera.m|palm|panasonic|philips|phone|playstation|portalmmm|sagem-|samsung|sanyo|sec-|sendo|sharp|softbank|symbian|teleca|up.browser|webos)") {
set req.http.x-wap = "no";
}
if(req.http.Cookie ~ "mf_useformat=") {
# これは利用者がフッタにある切替えリンク「モバイルビュー」をクリックしたことを意味します。
# これがモバイルページとしてキャッシュされるべきだと vcl_hash() に通知します。
set req.http.x-wap = "no";
}
}
sub vcl_hash {
# ページのモバイル版を別々にキャッシュします。
#
# 注: x-wap ヘッダーは唯一の値をもつべきです (値が存在する場合)。そのため vcl_recv() は利用者が提供した X-WAP ヘッダーを除去する必要があります。
hash_data(req.http.x-wap);
}
$wgMFAutodetectMobileView = true;
そのようにしない場合、MobileFrontend は誤動作します($wgMobileUrlTemplate を設定しない場合、X-WAP ヘッダを無視します。それを設定した場合、フッタにあるモバイルビュー切替えリンクのためのクッキー "useformat" を設定しません)。