如何使用URL Rewrite和ASP.NET Optimization的捆绑包管理winhost上的子域

时间:2013-04-08 23:03:38

标签: asp.net-mvc-4 iis-7 url-rewriting bundling-and-minification asp.net-optimization

我正在使用带有WinHost的ASP.NET MVC4。

就像问here的问题一样,我遇到了同样的问题:

  

我正在尝试WinHost而且我遇到了一些问题   子域。在WinHost上,每个主机可以有多个子域   帐户,但每个子域指向根网站。例如。您可以   有www.example.com,sub1.example.com和sub2.example.com但所有   它们在http://www.example.com/显示内容。

     

其他主机允许您将子域指向您的子文件夹   网站。这将允许您将sub1.example.com指向/ sub1,   sub2.example.com到/ sub2和www.example.com到/.

     

WinHost建议使用asp / aspx页面进行重定向   http://sub1.example.comhttp://sub1.example.com/sub1,指出   到/ sub1。虽然这样可行,但我希望没有子域   网址两次。

     

所以我尝试使用IIS7 URL Rewrite将http://sub1.example.com指向   / SUB1。 Ben Powell在his blog上详细描述了这一点。

我设法让这部分工作,以便http://sub1.example.com实际指向IIS中的虚拟应用程序“/ sub1”。

如果我使用Url.Content,它可以完美运行。

现在,我正在使用ASP.NET优化,我捆绑脚本和CSS。问题是它绝对需要一个相对网址,即:

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

但是,因为这是一个相对网址,我将在标记中得到:

<script src="/sub1/bundles/jqueryval?v=UgyEMAYOuSB9Bb6HcOEVHpd6fIIp54yF086SRNVcdIY1"></script>

当然,由于“sub1”,它找不到文件。我想到了URL Redirect,我从未真正开始工作。也许是MVC中的一条路线?不确定如何做到这一点。我也可以完全放弃捆绑使用“Url.Content”,我觉得很难过。

处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我知道您可以使用IBundleTransform根据特殊情况修改捆绑包中的内容。您可以修改捆绑上下文本身。这是一个链接MVC4 StyleBundle not resolving images