错误400错误请求 - 个别重定向

时间:2018-04-25 08:31:31

标签: asp.net redirect iis http-error

Seo公司要求将每个404错误请求重定向到特定网址。 我要求将错误400(错误请求)重定向到特殊页面。

我可以在web.config文件中执行此操作,但要求是每个url到特殊页面 例如 https://stackoverflow.com/questions/askhttps://stackoverflow.com/questions/ask =>(301)https://stackoverflow.com/questions/ask https://stackoverflow.com/questionshttps://stackoverflow.com/questions => (301)https://stackoverflow.com/questions

有可能吗? 我的应用程序是IIS SERVER上的ASP.NET(非MVC)

由于

2 个答案:

答案 0 :(得分:0)

<强>警告:

你说这是&#34; ASP.NET(不是MVC)&#34;。我将假设这意味着您使用WebForms而不是ASP.NET Core。在这两种情况下都可以使用以下建议,但只有在您使用IIS托管的情况下才能使用ASP.NET Core。

<强>答案:

您正在寻找IIS URL Rewrite,这是一个可以安装在IIS中然后通过web.config进行配置的模块。这提供的一个功能是重写映射,它基本上是 URL映射的列表,其中对前者的请求将导致重定向到后者。 documentation for URL Rewrite maps is here,这是文档中的一个示例:

定义映射:

<rewrite>
    <rewriteMaps>
        <rewriteMap name="StaticRewrites" defaultValue="">
            <add key="/article1" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/some-title" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/post/some-title.html" value="/article.aspx?id=1&amp;title=some-title" />
        </rewriteMap>
    </rewriteMaps>
</rewrite>

然后添加重写规则以使用您刚刚定义的映射:

<rules>
    <rule name="Rewrite Rule">
        <match url=".*" />
        <conditions>
            <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
        </conditions>
        <action type="Rewrite" url="{C:1}" />
    </rule>
</rules>

在您的情况下,您希望使用Redirect操作而不是Rewrite

该模块提供了许多其他配置选项。

答案 1 :(得分:0)

在asp.net webforms上设置一个页面,即Redirect.aspx,以重定向所有类型400的错误:

<configuration>
 <system.web>
   <customErrors defaultRedirect="Error.htm"
                 mode="RemoteOnly">
     <error statusCode="400"
            redirect="Redirect.aspx"/>
   </customErrors>
 </system.web>

然后在页面上看到它来自的Url:

Request.UrlReferrer

然后相应地处理