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 错误时重定向到另一个域的主要内容,如果未能解决你的问题,请参考以下文章
当用户在 asp.net mvc3 中未授权时重定向到另一个页面