わかりました、URL の書き換えとカスタム html ヘルパーを含む適切なソリューションを思いつきました。
web.config:
<rule name="BundlingRewrite" stopProcessing="true">
<match url="^content/min/([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="content/min/{R:1}?v={R:2}" />
</rule>
ヘルパー:
public static IHtmlString RenderCdnCss(this HtmlHelper helper, params string[] paths)
{
if (BundleTable.EnableOptimizations)
{
StringBuilder sb = new StringBuilder();
Uri baseUri = helper.ViewContext.HttpContext.Request.Url;
foreach (string s in paths) {
Uri uri = new Uri(baseUri, BundleTable.Bundles.ResolveBundleUrl(s));
sb.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\"/>", uri.PathAndQuery.Replace("?v=", "/"));
}
return new HtmlString(sb.ToString());
}
return Styles.Render(paths);
}
ヘルパーは、バンドルされた URL をより CDN に適したものに変換します。例えば:
/content/min/css?v=3GWBEyScjC610oPQm0JVybboQ_EmX3StAuCZjd_B7bE1
になる
/コンテンツ/分/css/3GWBEyScjC610oPQm0JVybboQ_EmX3StAuCZjd_B7bE1
URL 書き換え (IIS Url Rewrite 2.0) は content/min/{some folder}/{some token} 内の URL を探し、それを content/min/{some folder}?v={some token} に書き換えます (パスは何ですか?デフォルトで見えます)
そのため、バンドラーはそれほど賢明ではなく、パスは CDN フレンドリーになります。私の場合、cdn の URL を URL の前に追加しますが、それは上記には含まれていません。