使用IIS6,如何将文件放置在子文件夹中,但是就像在根目录中一样来提供文件服务?

时间:2020-03-05 18:48:13  来源:igfitidea点击:

我们在IIS 6上运行的ASP.NET 3.5网站有两个团队正在添加内容:

  • 开发团队添加代码。
  • 业务团队添加简单的网页。

为了保持理智和组织,我们希望业务团队将其网页添加到项目的子文件夹中:

Root: for pages of development team 
  
  Content: for pages of business team

我们希望用户能够导航到业务团队的内容,而不必在其URL中添加"内容",如下所述:

Root: Default.aspx  (Available at: www.oursite.com/default.aspx)
  
  Content: Popcorn.aspx  (Available at: www.oursite.com/popcorn.aspx)

我们是否可以通过一种方法来在ISAPI重写工具中为这些页面中的每个页面创建配置条目?

解决方案

回答

由于扩展名将是ASPX,因此ASP.NET将接收请求...我们可以编写HttpModule来检查生成404的页面,然后还检查子文件夹。

如果我们知道所有具有某种格式的页面都将来自该文件夹,则只需重写ASP.NET中的URL(在Global.asax或者HttpModule中)。

回答

我目前没有任何方法可以对此进行测试,但是我认为我们可以在RewriteCond上使用-f标志来检查两个目录中是否存在文件。

RewriteCond %{REQUEST_FILENAME} -!f
RewriteCond Content/%{REQUEST_FILENAME} -f
RewriteRule (.*) Content/(.*)

诸如此类的事情也可能会满足需求。