我运行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>
这样的事情可能吗?
答案 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.com
或image.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