UrlResolver
in package
絶対URL / root-relative URL への変換、V2モジュール向けのURL解決を担う。
Table of Contents
Properties
Methods
- __construct() : mixed
- convertAssetUrlsToAbsolute() : string
- HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。
- convertRelativeUrlToAbsolute() : string
- 単一の相対URLを絶対URL(フルURL)に変換する
- resolveUrl() : string
- V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す
- toAbsoluteUrl() : string
- URL を完全な absolute URL(scheme + host + path)に変換する。
- toRootRelativeUrl() : string
- URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。
- extractOrigin() : string
- URI から origin(scheme + host + port)を抽出する。
- isAbsoluteUri() : bool
- URL が "absolute URI" として自己解決可能かを判定する。
- resolveAgainstBase() : string
- resolveSrcset() : string
- `srcset` 属性値内の各 URL を base URL に対して解決する。
Properties
$deliveryUrlRewriter
private
DeliveryUrlRewriter
$deliveryUrlRewriter
Methods
__construct()
public
__construct(DeliveryUrlRewriter $deliveryUrlRewriter) : mixed
Parameters
- $deliveryUrlRewriter : DeliveryUrlRewriter
convertAssetUrlsToAbsolute()
HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。
public
convertAssetUrlsToAbsolute(string $html, string $baseUrl) : string
APIビルド/V2モジュールなどヘッドレス出力向けの正規化。クロスドメインで配信 される API レスポンスでは、フロント(Next.js 等)が別ドメインから取得する都合上、 画像・動画等は CMS ドメインの絶対URLになっている必要がある。
- 対象:
/
- 非対象(一切触らない): /
- 非対象(CSRF・実行コンテキストへの影響回避):
- スキーム付き URL(mailto:, tel:, javascript:, data:, blob: など)、 プロトコル相対(//host/...)、フラグメントのみ(#hash)、空文字は変換しない。
- base が origin(scheme + host)を含む場合のみ絶対URL化し、path のみの base のときはルート相対のまま保持する。
Parameters
- $html : string
- $baseUrl : string
Return values
stringconvertRelativeUrlToAbsolute()
単一の相対URLを絶対URL(フルURL)に変換する
public
convertRelativeUrlToAbsolute(string $url, string $baseUrl) : string
- 空文字、
http(s)://、プロトコル相対 (//)、data:始まりの URL はそのまま返す /始まりのルート相対パスは baseUrl のスキーム + ホスト (+ ポート) を前置する- それ以外の相対パスは baseUrl 全体を前置する
Parameters
- $url : string
- $baseUrl : string
Return values
stringresolveUrl()
V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す
public
resolveUrl(string $path[, string $offset = '' ]) : string
Parameters
- $path : string
- $offset : string = ''
Return values
stringtoAbsoluteUrl()
URL を完全な absolute URL(scheme + host + path)に変換する。
public
toAbsoluteUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string
グローバル状態に依存しない pure 関数($baseUrl を省略した場合のみ BASE_URL を読む)。
- 既に scheme 付き / protocol-relative の場合はそのまま返す。
- ルート相対
/fooは base の origin(scheme + host + port)と結合する。 base のサブパス(/site/)は無視される。 - ドキュメント相対
fooは base 全体(origin + path)と結合する。
Parameters
- $path : string
-
入力パス
- $offset : string = ''
-
URL の前置オフセット(DIR_OFFSET 相当)
- $baseUrl : string|null = null
-
解決の基準とする base URL。null の場合は BASE_URL を使用
Return values
stringtoRootRelativeUrl()
URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。
public
toRootRelativeUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string
V1 / V2 の HTML テンプレート出力で「ブラウザが現在のホストで解決する」前提の URL を生成するときに使う。グローバル状態に依存しない pure 関数($baseUrl を 省略した場合のみ BASE_URL を読む)。
- 既に scheme 付き / protocol-relative の場合はそのまま返す。
- ルート相対
/fooはそのまま返す(既に root-relative なので変換不要)。 - ドキュメント相対
fooは base の path+query 部分のみと結合する。
Parameters
- $path : string
-
入力パス
- $offset : string = ''
-
URL の前置オフセット(DIR_OFFSET 相当)
- $baseUrl : string|null = null
-
解決の基準とする base URL。null の場合は BASE_URL を使用
Return values
stringextractOrigin()
URI から origin(scheme + host + port)を抽出する。
private
extractOrigin(Uri|null $uri) : string
Parameters
- $uri : Uri|null
Return values
stringisAbsoluteUri()
URL が "absolute URI" として自己解決可能かを判定する。
private
isAbsoluteUri(string $url) : bool
以下のいずれかなら true:
- scheme 付き URI(
http(s):,mailto:,tel:,data:,blob:,javascript:,ftp:など) - protocol-relative(
//host/...)
/foo foo ../foo #anchor ?q=1 '' のような base に対して
解決が必要な参照 は false。「ルート相対 /foo も解決済み扱いにしたい」
のような V1 互換の判定が必要な場合は、呼び出し側で
str_starts_with($path, '/') を別途チェックする。
Parameters
- $url : string
Return values
boolresolveAgainstBase()
private
resolveAgainstBase(string $url, string $baseUrl) : string
Parameters
- $url : string
- $baseUrl : string
Return values
stringresolveSrcset()
`srcset` 属性値内の各 URL を base URL に対して解決する。
private
resolveSrcset(string $srcset, string $baseUrl) : string
HTML Living Standard §4.8.4.3.2 "parse a srcset attribute" のアルゴリズムに準拠する。 URL は「ASCII whitespace でない連続」として読み取り、カンマでは分割しないため、 データURL内のカンマも誤分割されずに URL の一部として扱われる。
Parameters
- $srcset : string
-
srcset 属性値(例: "/a.jpg 1x, /b.jpg 2x")
- $baseUrl : string
-
解決の基準となる URL
Return values
string —各 URL を解決した srcset 文字列