web.config 在 404 错误时重定向到另一个域

Posted

技术标签:

【中文标题】web.config 在 404 错误时重定向到另一个域【英文标题】:web.config redirect to another domain on 404 error 【发布时间】:2018-07-19 22:57:03 【问题描述】:

我们正在将旧站点迁移到新站点(托管在 Azure 上的 wordpress),但由于某些原因,我们需要在线维护旧站点。假设站点是: 新网站 www.site.com 旧网站 www.oldsite.com 这就是我们需要的: 如果用户输入 www.site.com/somepath 并且该路径不存在,则必须将其重定向到 www.oldsite.com/somepath。

是否可以通过在 web.config 中设置 url 重写或将 404 错误重定向到旧域来实现? 先感谢您, 马可

【问题讨论】:

本文档:zainrizvi.io/2016/04/07/block-default-azure-websites-domain 可能有助于实现您的目标。 嗨!感谢您的建议,我只知道那个帖子,我将解决方案用于另一个网站。但在这种情况下,我不必重定向任何内容,只需重定向不存在的 URL(404 错误),那么我该如何编写规则??? 【参考方案1】:

根据您的信息,我假设您使用的是 Azure Marketplace 中的 WordPress 模板(not WordPress on Linux)(在 WordPress Web 配置过程中,系统会要求您选择是 Azure mysql 还是应用程序选项中的 MySQL)。您可以下载 IIS 管理器扩展并远程连接到您的站点,然后开始编写您的规则。您也可以下载 web.config 文件(通过 FTP 并自己制作)。这里是web.config的参考https://social.technet.microsoft.com/wiki/contents/articles/32229.azure-create-an-url-rewrite-azure-web-app.aspx

以下是示例规则

<rewrite>
  <outboundRules>
    <rule name="404redirection">
    <match filterByTags="None" serverVariable="RESPONSE_STATUS" pattern="^404" />
      <conditions>
        <add input="HTTP_HOST" type="Pattern" pattern="^http://newwebsite.net/somepath(.*)">
      </conditions>
        <action type="Redirect" value="http://oldwebsite.net/somepath(.*)" />
    </rule>
  </outboundRules>
 </rewrite>

请注意,这是基于带有 HTTP 响应 (404) 的 Web 服务器变量的示例规则。如果您的 WordPress 使用一些自定义查询字符串等,则该规则应该比这个更复杂。

【讨论】:

Hi Thuan Ng,非常感谢,我会试试的!只有一个问题:是否有可能有 somepath 动态的,所以它对每个未找到的 404 url​​ 都有效? @mtallon 你是什么意思?你需要删除一些路径吗?如果是这样,只需像这样使用 (.*) yoursite.net(.*)。只要匹配到主机且http响应状态码为404,就触发规则 我的意思是:用户输入 newwebsite.net/aaa,如果在 newwebsite.net 上找不到路径 /aaa,则必须将用户重定向到 oldwebsite.com/aaa;如果用户输入 newwebsite.net/bbb 并且在 newwebsite.net 上找不到路径 /bbb,则必须将用户重定向到 oldwebsite/bbb 等等。我希望现在更清楚了

以上是关于web.config 在 404 错误时重定向到另一个域的主要内容,如果未能解决你的问题,请参考以下文章

Angular:如何在提交时重定向到另一个页面

单击按钮时重定向到另一个页面-> Javascript

当用户在 asp.net mvc3 中未授权时重定向到另一个页面

当用户在 asp.net mvc3 中未授权时重定向到另一个页面

如何在mvc中单击按钮时重定向到另一个页面和特定的div

使用 jQuery 使用 RESTful API 时重定向到另一个 html 页面