0

我有一个现有的网站,上面有大量对http://domain.com的引用。我们想在页面上强制执行 https,所以我添加了一个简单的代码片段:

    if($_SERVER["HTTPS"] != "on") {
        die(header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]));
        exit(); // to ensure the script stops here, just in case
    }

这是可行的,除了许多文件在操作中都有带有 http 的自引用表单。例如,在 page.php 上可能有:

<form action="http://domain.com/page.php" method="post">
<input type="text" name="sample" />
<input type="submit" value="Next" />
</form>

我有什么办法可以在不破坏所有这些形式的情况下从上面强制执行这个重定向片段? 目标是避免手动更新 100 个文件中的每一个,为“http/https”执行繁琐的查找/替换步骤。

4

1 回答 1

1

不,您不能只是重定向,因为无论如何您都在提交不安全的内容,重定向到 https 将毫无意义,因为请求已经可见。

您应该使用相对网址。哪里/和刚才的域名一样

/=domain.com

/page=domain.com/page

没有前导/的 url 是相对于当前 uri 的(减去查询变量):所以,从http://domain.com/page-

行动:foo=http://domain.com/page/foo

行动:/foo=http://domain.com/foo

http 或 https 将以这种方式保留。

另一种方法是用 2 个斜杠动作引导域://domain.com虽然我认为旧 IE 版本不明白。

于 2013-03-21T05:33:44.720 回答