【问题标题】:Error 400 Bad Request - individual redirect错误 400 错误请求 - 单独重定向
【发布时间】:2018-10-05 15:35:34
【问题描述】:

Seo 公司要求将每个 404 错误请求重定向到特定 url。 我要求将错误 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)

谢谢

【问题讨论】:

  • ASP.NET 然后呢?
  • 值得指出的是,您提到了 404(未找到)和 400(这是错误请求)。通常,您只想重定向 404,因为 400 可能是您的应用程序出现问题的征兆。无论如何,请在下面回答...

标签: asp.net redirect iis http-error


【解决方案1】:

警告:

你说这是“ASP.NET(不是 MVC)”。我假设这意味着您使用的是 WebForms 而不是 ASP.NET Core。以下建议可用于这两种情况,但仅适用于 ASP.NET Core,前提是您使用 IIS 进行托管。

答案:

您正在寻找 IIS URL Rewrite,该模块可以安装在 IIS 中,然后通过您的 web.config 进行配置。它提供的一个功能是重写映射,它本质上是 fromto 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

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

【讨论】:

  • 谢谢,但是 URL 重写是否可以处理错误 400,例如来自 example.com/pagehttp://www?到example.com/page
  • 它将任何 known 失败的 URL 映射到另一个 URL(不管 URL 会以其他方式响应的状态代码)。因此,如果您知道您有一个引荐来源网址请求特定的错误 URL,您可以将其添加到您的地图中。但 URL 重写规则仅基于解析请求的 URL。如果您在重写映射中包含 example.com/pagehttp://www 作为源 URL,则该 URL 响应的状态代码将变为 301(假设您想要永久重定向)
【解决方案2】:

在 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

然后进行相应处理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2018-06-22
    相关资源
    最近更新 更多