IIS7 urlMapped url 的默认文档会引发 403 错误

IIS7 urlMapped url 的默认文档会引发 403 错误

希望这一切都有意义:

我有一个针对 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 错误是因为可能没有指定(或找到)其他默认文档,并且目录浏览被禁用(默认情况下)。

相关内容