マッチパターン
マッチパターンは URL のグループを指定する方法です。マッチパターンはいくつかの URL に一致します。マッチパターンは WebExtensions API を使う拡張機能向けに、いくつかの場所で使用されます。特にコンテンツスクリプトをロードする文書を指定するときや、webRequest リスナーを追加する URL を指定する時に使用します。
マッチパターンを使用する API は通常マッチパターンのリストを受け取り、URL がパターンのいずれかに一致する場合は適切なアクションを実行します。たとえば manifest.json 内の content_scripts キーを参照してください。
マッチパターンの構造
メモ: ブラウザーによっては未対応のスキームがあります。 詳しくはブラウザー互換性一覧表を見てください。
すべてのマッチパターンは文字列で指定します。特別な値 <all_urls> を除き、マッチパターンは 3 つの部分から成り立っています。 scheme, host, path です。 scheme と host の間は :// で句切られます。
<scheme>://<host><path>
scheme
scheme 成分は 2 つの形式のうち、どちらかを指定します。
| 形式 | 一致するもの |
|---|---|
* |
"http" か "https" のみ、一部のブラウザーでは "ws" と "wss" も |
http, https, ws,
wss, ftp, data,
file, (chrome-)extension のうちどれか 1 つ
|
指定したスキームのみ |
host
host 成分は以下の形式のうちどれか 1 つを取ります。
| 形式 | 一致するもの |
|---|---|
* |
すべてのホスト。 |
*. に続くホスト名の一部分。オプションでポート番号を含む。 |
指定されたホスト(とポート)およびそのサブドメインすべて。 |
| ワイルドカードを含まない完全なホスト名。オプションでポート番号を含む。 | ホスト名(とポート番号)のみ。 |
メモ: Firefox では、(Firefox のバグ 1362809) および (Firefox のバグ 1468162) の影響により、ポート番号の指定には対応していません。
host がオプションとなるのは、scheme が "file" の場合に限ります。
ワイルドカードは先頭でのみ使用できる点に注意してください。
path
path 成分は、必ず / で始まる必要があります。
その後、* ワイルドカードと、URL パスまたはクエリー文字列で許可されている任意の文字の任意の組み合わせを含むことができます。host とは異なり、path 成分では、* ワイルドカードを中央または末尾に含めることができ、また * ワイルドカードは複数回出現する可能性があります。
path の値は、URL パスに URL クエリー文字列を加えた文字列と一致します。これには、URL にクエリー文字列が含まれている場合、その 2 つの間の ? も含まれます。たとえば、URL パスが foo.bar で終わる任意のドメインの URL に一致させたい場合は、["*://*/*foo.bar", "*://*/*foo.bar?*"] のようなマッチパターンの配列を使用する必要があります。単に bar* とするのではなく、?* が必要なのは、末尾の * が URL パスの一部ではなく、URL クエリー文字列に適用されるように固定するためです。
URL フラグメント識別子も、その前にある # も、path の一部とは見なされず、パターンマッチングの際には無視されます。# を含むマッチパターンは、どの URL に対しても一致しません。
<all_urls>
特殊な値である <all_urls> は、サポートしているすべての scheme の URL( "http", "https", "file", "ftp", "app" )に一致します。
例
| パターン | 一致する例 | 一致しない例 |
|---|---|---|
|
すべての URL に一致。 |
|
|
|
すべての HTTP、HTTPS、WebSocket の URL に一致します。 |
|
|
|
"mozilla.org" またはそのサブドメインのいずれかでホストされている、すべての HTTP、HTTPS、WebSocket の URL に一致します。 |
|
|
|
正確に "mozilla.org/" でホストされているすべての HTTP、HTTPS、WebSocket URL に一致します。 |
|
|
|
ポート 8080 の "mozilla.org/" でホストされているすべての HTTPS URL に一致させます。 注:ポートの設定は Chrome では対応していますが、Firefox では対応していません。 |
|
|
|
Match only "ftp://mozilla.org/". |
ftp://mozilla.org |
|
|
パスが "path" である、任意のホスト上の HTTPS URL に一致します。 |
|
|
|
任意のホスト上の、パスが "path/" であり、URL クエリー文字列を含まない HTTPS URL に一致させます。 |
|
|
|
"mozilla.org" に任意の URL パスと URL クエリー文字列が付いた HTTPS URL 飲みに一致します。 |
|
|
|
この URL、またはこの URL に任意の URL フラグメントが付いたもののみ一致します。 |
|
その他のものすべて。 |
|
"mozilla.org" でホストされているHTTPS URLのうち、パスのどこかに "b" という部分が含まれるものに一致します。クエリー文字列を含む URL についても、その文字列が |
|
|
|
パスが "blah" で始まる任意のファイル URL に一致します。 |
|
file:///bleh/(パスが不一致) |
無効なマッチパターン
| パターン | 問題 | 理由 |
|---|---|---|
resource://path/ |
無効 | 未対応のスキーム。 |
https://mozilla.org |
無効 | パスがない。 |
https://www.mozilla.org/#section1 |
不一致 | 参照フラグメントを含みます。パターンと照合される URL からは、照合の前に参照フラグメントがすべて削除されます。 |
https://mozilla.*.org/ |
無効 | ホスト名の "*" は先頭に配置する必要があります。 |
https://*zilla.org/ |
無効 | ホスト名の "*" は、単独で指定するか、その後に "." が続く必要があります。 |
http*://mozilla.org/ |
無効 | スキーム内の "*" は、その文字のみである必要があります。 |
*://* |
無効 | 空のパス: *://*/* であるべき。 |
file://* |
無効 | 空のパス: file:///* であるべき。 Chrome では、host_permissions で宣言された場合、file://* が受け入れられ、この項目は自動的に file:///* に修正されます。 |