自定义错误更改 defaultRedirect

Custom Error Change defaultRedirect

我 运行 一个 Sitecore 多站点环境 (c#/MVC)。同一个 IIS 网站,同一个文件夹,同一个代码用于多个网站。例如 www.chalk.com 和 www.cheese.com,外观非常不同的网站,但都使用相同的 IIS 网站(主机 headers)、相同的文件夹、相同的 Web 配置、相同的数据库后端。

除错误页面外一切正常。在 web.Config 我有通常的设置:

<customErrors defaultRedirect="/error.html" mode="RemoteOnly" />

我需要类似

的东西
<customErrors mode="RemoteOnly">
   <error host="chalk.com" defaultRedirect="/chalkerror.html">
   <error host="cheese.com" defaultRedirect="/cheeseerror.html">
</customErrors>

这样的事情可能吗?

显然,这是无法实现的。 customErrors 设置用于重定向到针对特定 HTTP 错误代码的错误页面。

但是,正如您所提到的,它是一个 MVC 应用程序,您可以创建一个自定义错误处理程序 MVC 过滤器来检查 host\domain 并根据它重定向到所需的 ErrorView。

另外,这里描述了 6 种实现预期行为的好方法MVC Exception Handling

万一有人发现这个问题...

对我来说,我在重写规则中找到了答案。

注意:您需要安装 URL Rewrite IIS 扩展。 (Download Here)

我加到Web.Config

  <system.webServer>
    <rewrite>
      <rules configSource="folder\filename.config" />
    </rewrite>   
  </system.webServer>

然后是配置文件(filename.config)

<?xml version='1.0' encoding='utf-8'?>
<rules>
  <rule name="Error-Chalk" patternSyntax="Wildcard" stopProcessing="true">
    <match url="error.html" />
    <action type="Rewrite" url="chalkerror.html" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="*chalk*" />
    </conditions>
  </rule>
  <rule name="Error-Cheese" patternSyntax="Wildcard" stopProcessing="true">
    <match url="error.html" />
    <action type="Rewrite" url="cheeseerror.html" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="*cheese*" />
    </conditions>
  </rule>
<rules>

这一行 <add input="{HTTP_HOST}" pattern="*cheese*" /> 匹配域名,因此 www.cheese.comimage.cheese.com 将匹配。 <match url="error.html" /> 匹配请求的页面。 <action type="Rewrite" url="cheeseerror.html" /> 是 IIS 将提供的页面。我现在可以为不同的站点提供不同的错误页面。