ASP.NET MVC 4のバンドルとミニファイ機能を使用したいのですが、デバッグモードを実行しているため、何もバンドルされていないと想定してください。ただし、各参照は単純に単一のタグにレンダリングされます。ローカルではすべてが正常に機能します。
例
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
}
@Scripts.Render("~/bundles/jquery")
ビューから今すぐ呼び出すと、次のようなタグが生成されます。
<script src="/Scripts/jquery-1.8.2.js"></script>
次のように書くだけでも結果は同じです。
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
しかし、すべてをインターネットのテストサーバーに展開すると(引き続きデバッグモードを使用)、特定のドメインまたはサブドメインを特定のフォルダーにルーティングするURL書き換えが有効になります。
たとえば、ドメインがsub1.example.com
転送さexample.com/__sub1__
れる場合、sub2.example.com
転送先の場合などですexample.com/__sub2__
。ブラウザで開いsub1.example.com
たとき、通常、この転送が発生する手がかりはなく、URLは変更されず、すべてのURLが機能し続け、Url.Content(...)
メソッドを使用して生成された参照も機能します。
しかし、奇妙な理由で、を呼び出すと次の@Scripts.Render("~/bundles/jquery")
ようになります。
<script src="/__sub1__/Scripts/jquery-1.8.2.js"></script>
「/ sub1」の部分は生成されるべきではなく、レンダリングされたhtmlコードのどこにも表示されない部分であり、URLの書き換えが失敗するため404につながることに注意してください。
その間...
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
...それでも「/Scripts/jquery-1.8.2.js」への正しい相対パスをレンダリングします。そして、私はこのようなURLを書き直すことに他の問題を抱えたことはありません。そして、私はこの書き直しを取り除きたくありません。
明らかに、同じことがスタイルシートにも当てはまります。
私が試すことができるアイデアはありますか?