在umbraco下提供静态内容(通过IIS)

时间:2012-04-16 11:14:48

标签: iis umbraco virtual-directory

我在根上有一个Umbraco站点。它工作正常。

我需要能够从IIS提供静态(不是ASP.NET)内容,例如/ foo。 (/ foo映射到与主应用程序不同的文件夹结构,例如:

www.example.com     -> d:\sites\example.com
www.example.com/foo -> d:\sites\static\foo
www.example.com/bar -> d:\sites\static\bar
  • 我可以设置一个IIS应用程序,但后来我继承了父应用程序web.config,因为这是静态内容,它没有所需的dll等(并且不应该有它们!)

  • 我可以设置一个IIS虚拟目录,并将各种位添加到web.config中,告诉Umbraco不要使用该文件夹(umbracoReservedUrls,umbracoReservedPaths)。这可行,但它仍然作为主要的ASP.NET应用程序运行,我更喜欢它只是静态的(即,不允许.NET运行时)

两者都不理想,因为我们可能会有一些这样的,所以需要编写所有创建脚本。编辑4个web.config文件(在Web群集中)并不理想。

我想要的是:

  • 创建指向正确位置的虚拟目录(或应用)。告诉IIS将其作为静态内容提供。如果我必须将web.config放入文件夹(/ foo),告诉它根本不加载任何内容,那就没关系了(我可以使用非.NET应用程序池)

我搜索的所有内容都会出现“不能做,不能做”。我错过了什么吗?

[编辑]

只是为了澄清,我不需要CDN - 我们有一个。我只想让/ foo成为它自己的文件夹,带有一堆html / css / images(例如/foo/index.html,/foo/images/logo.png),这些文件都提供给用户,但是不是通过umbraco - 只是通过IIS。

3 个答案:

答案 0 :(得分:3)

根据您在问题中的第二个建议,可以告诉IIS禁止脚本访问。

我只需要做一些与此类似的事情,作为快速解决在工作中需要SSL托管的事情,所以我做了:

  1. 将代码放在Umbraco站点内的自己的文件夹中。

  2. 将文件夹设为自己的应用程序:

    How to create an application in IIS6 http://www.serverintellect.com/support/images/IIS6_VirDirApp_2.jpg

  3. (我可以在这里禁用执行权限,如果我想,请从上面的屏幕截图中的“仅脚本”下拉框中删除,但实际上我需要执行权限才能进行快速修复。)< / p>

  4. 添加了一个最小的Web.config来覆盖我不想要的Umbraco Web.config的位:

    <configuration>
       <system.web>
          <httpModules>
             <clear/>
          </httpModules>
          <httpHandlers>
             <clear/>
             <add path="*.aspx" verb="*"
               type="System.Web.UI.PageHandlerFactory" validate="true"/>
             <add path="*" verb="GET,HEAD,POST"
               type="System.Web.DefaultHttpHandler" validate="true"/>
             <add path="*" verb="*"
               type="System.Web.HttpMethodNotAllowedHandler" validate="true"/>
          </httpHandlers>
       </system.web>
    </configuration>
    

    (这些处理程序是直接从我的笔记本电脑上的C:\​Windows\​Microsoft.NET\​Framework64\​v4.0.30319\​Config\​web.config复制的)

  5. 没有第五步。

  6. 快速 - 非常脏 - 但它有效; o)

答案 1 :(得分:2)

也许有点难看,但是你可以在你的umbraco根文件夹中创建一个符号链接,只是将它作为普通文件夹提供服务吗? (也许还在web.config中添加了umbracoReservedPaths设置的路径)

答案 2 :(得分:0)

我从来没有找到一个很好的解决方案,因此我们最终将它放在一个单独的域上,并使用UrlRewriting将用户重定向到另一个服务器。

不完美,但确实有效。