マッチパターン
マッチパターンは 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 ,ftps ,data ,file のうちどれか 1 つ | 指定したスキームのみ |
host
host部は3つ形式のうちどれか 1 つを取ります。
形式 | マッチするもの |
---|---|
* | すべてのホスト |
*. に続くホスト名の一部分 | 指定したホストと任意のサブドメイン |
ワイルドカード無しの完全なホスト名 | 指定したホストのみ |
host 部にはポート番号は入りません。
"file"スキームだけは、host部はオプションです。
ワイルドカード "*" はhost の最初のみに適用できることに注意してください。
path
パス部は/
で開始しなければいけません。
その後、ワイルドカード*
と、URL パスとして許可される文字とを組み合わせたものが続けて入るかもしれません。ホスト部と異なり、パス部はワイルドカード*
を途中や終わりに含むことができて、さらに 2 つ以上の*
を含められます。
path の値は、URL パスにURL クエリーストリングを加えた文字列と一致します。クエリーストリングがある場合、それらの間に?
を含んでいます。例えば、foo.bar
で終わる URL パスのあらゆるドメインに URL マッチしたい場合、マッチパターンは['*://*/*foo.bar', '*://*/*foo.bar?*']
です。単にbar*
ではなく?*
は必要で、最後の*
は URL クエリーストリングにも、URL パスの部分でないものにも適用するためです。
URL フラグメント識別子や、#
の後についているものは、path とみなされません。
メモ:path パターン文字列にポート番号を含めるべきではありません。http://localhost:1234/*
のようにポート番号を追加するとマッチパターンは無視されます。しかし、http://localhost:1234
はhttp://localhost/*
にマッチします。
<all_urls>
特殊な値である<all_urls>
は、サポートしているすべての scheme の URL( "http", "https", "file", "ftp", "app" )にマッチします。
例
パターン | マッチする例 | マッチしない例 | |
---|---|---|---|
<all_urls> すべての URL にマッチ | http://example.org/ https://a.org/some/path/ ws://sockets.somewhere.org/ wss://ws.example.com/stuff/ ftp://files.somewhere.org/ ftps://files.somewhere.org/ | resource://a/b/c/ (サポートされていないスキーム) | |
*://*/* すべての HTTP, HTTPS, WebSocket URL にマッチ | http://example.org/ https://a.org/some/path/ ws://sockets.somewhere.org/ wss://ws.example.com/stuff/ | ftp://ftp.example.org/ (マッチしないスキーム)ftps://ftp.example.org/ (マッチしないスキーム)file:///a/ (マッチしないスキーム) | |
*://*.mozilla.org/* "mozilla.org" かそのサブドメインでホストされている HTTP, HTTPS, WebSocket の URL にマッチ | http://mozilla.org/ https://mozilla.org/ http://a.mozilla.org/ http://a.b.mozilla.org/ https://b.mozilla.org/path/ ws://ws.mozilla.org/ wss://secure.mozilla.org/something | ftp://mozilla.org/ (マッチしないスキーム)http://mozilla.com/ (マッチしないホスト)http://firefox.org/ (マッチしないホスト) | |
*://mozilla.org/ HTTP や HTTPS や WebSocket の"mozilla.org/"のホストのみマッチ | http://mozilla.org/ https://mozilla.org/ ws://mozilla.org/ wss://mozilla.org/ | ftp://mozilla.org/ (マッチしないスキーム)http://a.mozilla.org/ (マッチしないホスト)http://mozilla.org/a (マッチしないパス) | |
ftp://mozilla.org/ "ftp://mozilla.org/"のみマッチ | ftp://mozilla.org | http://mozilla.org/ (マッチしないスキーム)ftp://sub.mozilla.org/ (マッチしないホスト)ftp://mozilla.org/path (マッチしないパス) | |
https://*/path HTTPS URL で path が "path"のホストのみマッチ | https://mozilla.org/path https://a.mozilla.org/path https://something.com/path | http://mozilla.org/path (マッチしないスキーム)https://mozilla.org/path/ (マッチしないパス)https://mozilla.org/a (マッチしないパス)https://mozilla.org/ (マッチしないパス)https://mozilla.org/path?foo=1 (URL クエリーストリングによりマッチしないパス) | |
https://*/path/ あらゆるホスト上の HTTPS URL で、パスが "path/" で URL にクエリーストリングのないものにマッチ | https://mozilla.org/path/ https://a.mozilla.org/path/ https://something.com/path / | http://mozilla.org/path/ (マッチしないスキーム)https://mozilla.org/path (マッチしないパス)https://mozilla.org/a (マッチしないパス)https://mozilla.org/ (マッチしないパス)https://mozilla.org/path?foo=1 (URL クエリーストリングによりマッチしないパス) | |
https://mozilla.org/* HTTPS URL のみにマッチで、"mozilla.org"だけ、パスやクエリーストリングは問わない | https://mozilla.org/ https://mozilla.org/path https://mozilla.org/another https://mozilla.org/path/to/doc https://mozilla.org/path/to/doc?foo=1 | http://mozilla.org/path (マッチしないスキーム)https://mozilla.com/path (マッチしないホスト) | |
https://mozilla.org/a/b/c/ この URL 、あるいはフラグメント付きのこの URL にのみマッチ | https://mozilla.org/a/b/c/ https://mozilla.org/a/b/c/#section1 | これ以外のすべて | |
https://mozilla.org/*/b/*/ "mozilla.org"でホストされた HTTPS URL で、パスは中間のどこかに "b" を含むもの。クエリーストリングが / で終了していればそれにもマッチ | https://mozilla.org/a/b/c/ https://mozilla.org/d/b/f/ https://mozilla.org/a/b/c/d/ https://mozilla.org/a/b/c/d/#section1 https://mozilla.org/a/b/c/d/?foo=/ https://mozilla.org/a?foo=21314&bar=/b/&extra=c/ | https://mozilla.org/b/*/ (マッチしないパス)https://mozilla.org/a/b/ (マッチしないパス)https://mozilla.org/a/b/c/d/?foo=bar (URL クエリーストリングによりマッチしないパス) | |
file:///blah/* FILE URL でパスが "blah" で始まるもの | file:///blah/ file://blah/bleh | file:///bleh/ (マッチしないパス) |
無効なマッチパターン
無効なパターン | 理由 | |
---|---|---|
resource://path/ | サポートされていないスキーム。 | |
https://mozilla.org | パスがない。 | |
https://mozilla.*.org/ | "*" はホストの先頭に使用する必要があります。 | |
https://*zilla.org/ | ホスト内の "*" は唯一の文字であるか、"."が続かなければいけません。 | |
http*://mozilla.org/ | スキーム内の "*" は唯一の文字であるべきです。 | |
*://* | パスが空: "*://*/* "であるべき。 | |
file://* | パスが空: "file:///* "であるべき 。 |