MVC包和IIS虚拟目录(URL重写)

skm*_*asq 8 asp.net-mvc iis-7 url-rewriting virtual-directory bundling-and-minification

我在IIS服务器虚拟目录上托管多个应用程序,我正在使用URL Rewrite来方便它们.像这样手动编写的所有图像和其他资源"~/path/to/my/content"都有正确的输出"/path/to/my/content",但是束路径之类"~/client/js"的输出"/myapplication/client/js"应该是"/client/js".

我该如何解决这个问题?

我如何启动脚本包:

var scriptBundle = new ScriptBundle("~/client/js");
Run Code Online (Sandbox Code Playgroud)

重写配置:

<rule name="Official Website" stopProcessing="true">
               <match url="(.*)" />
               <conditions>
                  <add input="{HTTP_HOST}" matchType="Pattern" pattern="^(www\.)?domain\.com$" ignoreCase="true" negate="false" />
               </conditions>
               <action type="Rewrite" url="officialsite/{R:1}" />
            </rule>
Run Code Online (Sandbox Code Playgroud)

正在调查这些主题,但无法让任何事情对我有用:

更新:我使用Winhost作为托管服务提供商,他们不支持为IP设置主机头,可能是由于共享IP.它们提供了根文件夹的域指针,这就是我使用URL重写的原因.

Ami*_*rzi 0

你说 :

我在 IIS 服务器虚拟目录上托管多个应用程序,并使用 URL 重写来简化它们

因此,问题涉及可用于捆绑等的根配置(虚拟目录),这与捆绑配置或重写规则无关。我认为您需要将myapplication目录设置为虚拟并将其设置为单独的网站。确保您已遵循创建网站中提供的说明,其中显示:

当您在 IIS 中添加网站时,会在 ApplicationHost.config文件中创建一个网站条目。该条目指定:

  1. 站点的网络绑定
  2. 将站点映射到文件系统中的某个位置
  3. (可选)指定内容访问的用户凭据

为了确保用户请求到达正确的网站,必须为服务器上的每个站点配置唯一的标识。可以使用以下唯一标识符来区分托管在同一服务器上的网站。

  • 主机标头名称(推荐
  • IP地址
  • TCP端口号

为网站配置主机标头 (IIS 7)指向第一个。

更新:我认为服务器和您的项目可能存在名称冲突。更明智地尝试将客户端及其~/client/js文件夹更改为新的。除非服务器有多个路径选择(具有此路径深度\)来获取,否则您可以通过在项目和 js 包映射中添加额外的深度来解决它。

更新 2:最后,我建议您阅读如何在 winhost.com 上发布或托管子域?中提供的完整文章。解决这个令人惊奇的问题:)