自定义错误更改defaultRedirect

时间:2017-03-02 16:03:58

标签: asp.net-mvc iis web-config sitecore sitecore8

我运行Sitecore多站点环境(c#/ MVC)。相同的IIS网站,相同的文件夹,相同的代码用于多个网站。例如www.chalk.com和www.cheese.com,看起来非常不同的网站,但都使用相同的IIS网站(主机头),相同的文件夹,相同的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>

这样的事情可能吗?

2 个答案:

答案 0 :(得分:2)

如果有人发现这个问题......

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

注意:您需要安装URL Rewrite IIS Extention。 (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将提供的页面。我现在可以为不同的网站提供不同的错误页面。

答案 1 :(得分:0)

显然,这是不可能实现的。 customErrors设置可以重定向到针对特定HTTP错误代码的错误页面。

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

此外,这里有6个很好的方法来实现预期的行为MVC Exception Handling