【问题标题】:Header location redirect not changing domain with rewrite标头位置重定向不通过重写更改域
【发布时间】:2022-02-04 21:54:14
【问题描述】:

我们有一个页面需要重定向到另一个页面。通常,这是一件相对简单的事情。但是,我们重定向到的页面位于另一个域上。页面:

www.oursite.com/our-page.php

需要重定向到http://www.example.com/another-page.php

通常这在 php 中是一件简单的事情。

header("Location: http://www.example.com/another-page.php");
die();

对吗?我已经做了几十万次了。但是在这种情况下,我们通过 IIS 重写规则到达 our-page.php。现在,当你点击页面时,浏览器会跳转到

www.oursite.com/another-page.php

无论我在位置标头中放入什么,它都坚持www.oursite.com。我知道标题肯定被设置了,它没有给我任何标题未设置警告,它正试图去 another-page.com。

我不知道的位置标头是否有一些跨域限制?我一直无法在网上找到任何东西。在任何其他情况下页面重定向都很好,只是不使用重写规则

IIS 规则是:

<rule name="test" enabled="true" stopProcessing="true">

  <match url="^test/(.*)$" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />

  <action type="Rewrite" url="https://{HTTP_HOST}/our-page.php/?path={R:1}}" />

</rule>

还有更多事情要做,但我已将代码剥离为除了设置位置标头之外什么都没有。

我期望发生的事情是我去http://www.oursite.com/test/some-path。这会被重写为http://www.oursite.com/our-page/?path=some-path,而后者又会设置标头,而用户最终会使用http://www.example.com/another-page.php

实际发生的情况是用户最终访问了http://www.oursite.com/another-page.php(然后再次跳转到我们的 404 页面,因为它不存在)

【问题讨论】:

  • 您的 IIS 规则似乎没有任何问题。但是“这反过来又设置了标头,并且用户最终使用了example.com/another-page.php”是由our-page.php 完成的。那么你确定 PHP 页面可以正常工作吗?
  • 我建议你使用失败请求跟踪来查看详细的错误信息。
  • @LexLi 是的。我将php代码减少到最低限度,只是重定向,没有别的,问题仍然存在。在没有重定向规则的情况下尝试了它,并且它有效。和。它没有。经过几周的努力,我确实找到了一个解决方案:我将整个应用程序移至 Apache 服务器,并将规则转换为 .htaccess。并非一切都完美无缺。不是理想的解决方案,但我会保留它以防其他人遇到问题,这是一个选择。

标签: php iis url-rewriting


【解决方案1】:

经过几周的挠头和疯狂的谷歌搜索。我最终得到了一个相当粗略的解决方案。

我将应用程序从 IIS 服务器移至 Apache 服务器,并将规则转换为 .htaccess 等效项。可能不是理想的解决方案,因为这可能不是每个人都可以使用的选项,但在我这样做之后,我就没有更多问题了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2015-02-04
    • 2019-05-22
    相关资源
    最近更新 更多