自定义错误更改 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.com
或 image.cheese.com
将匹配。 <match url="error.html" />
匹配请求的页面。 <action type="Rewrite" url="cheeseerror.html" />
是 IIS 将提供的页面。我现在可以为不同的站点提供不同的错误页面。
我 运行 一个 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.com
或 image.cheese.com
将匹配。 <match url="error.html" />
匹配请求的页面。 <action type="Rewrite" url="cheeseerror.html" />
是 IIS 将提供的页面。我现在可以为不同的站点提供不同的错误页面。