希望这一切都有意义:
我有一个针对 IIS7 服务器的 Web 应用程序项目,该项目可以使用不同的母版页来“设置主题”。
由于我正在尝试执行的操作,项目的根目录没有 aspx 文件,因此我使用 web.config 的功能将“~/default.aspx”重写为“~/themes/a/default.aspx”
只要我输入“http://www.mysite.com/default.aspx",但只输入“http://www.mysite.com“导致“403 - 禁止:访问被拒绝”错误
我希望 urlMapping 和默认文档的组合能够足够智能地处理这个问题,但事实并非如此
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="default.aspx"/>
</files>
</defaultDocument>
</system.webServer>
我也试过了
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="~/themes/a/default.aspx"/>
</files>
</defaultDocument>
</system.webServer>
无济于事
我希望浏览器在没有定义文档的情况下进入,IIS7 会假设它是 default.aspx,然后 urlMapping 会相应地映射它,但没有
有什么建议吗?我在这里读过很多有类似问题的帖子,但不是同一个问题
答案1
你可以处理这两种情况http://www.mysite.com/和http://www.mysite.com/default.aspx使用一条 URL 重写规则。
<rule name="Rewrite to theme folder">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{URL}" pattern="^/default\.aspx$" />
<add input="{URL}" pattern="^/$" />
</conditions>
<action type="Rewrite" url="/themes/a/default.aspx" logRewrittenUrl="true" />
</rule>
默认文档只能设置为文件名。您无法指定文件夹。IIS 可能会忽略您的输入,因为它无法将其作为文件打开。发生 403 错误是因为可能没有指定(或找到)其他默认文档,并且目录浏览被禁用(默认情况下)。