我写了一个脚本,强制通过http或https访问网站的某些部分。我们希望用户重定向到正常的http页面,以防他们意外地登录到https版本,反之亦然。到目前为止,一切都很好,但我有两个问题要问你们。
-
切换协议时要发送的正确状态标头是什么?在重定向之前,我目前在这两种情况下都使用这个:
header('HTTP/1.1 301 Moved Permanently');
-
如果我们使用https,检测的首选方法是什么?
// if ($_SERVER['SERVER_PORT'] == 443) /* EDIT: OK, not this? */ if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on'))
还有别的吗?二者都
回复意见:
-
我们使用的是Apache,但如果有一个通用的解决方案,那就太好了。
-
我们不想使用
.htaccess
,因为我们正在使用的CMS"标记"了https所需的页面,这是其中的一部分。我们不想将URL"硬编码"到一个文件中。
301
重定向是正确的方法。您不能在HTTP和HTTPS中间流之间切换。必须在客户端中重新加载页面- 通过
$_SERVER['HTTPS']
的第二种方法是优选的方法。只需确保您的web服务器支持它