标头位置相对路径兼容性

问题描述 投票:0回答:2

这个相对位置 html header 绝对兼容所有平台上的所有浏览器吗?有什么标准吗?

Location: some_script.php?la=2&po=2030

我的意思是,它是否总是重定向到当前目录下的 some_script.php ?

php html redirect header
2个回答
34
投票

标准是这样的:

header('Location: http://www.mywebsite.com/yourpage.php?id=32', TRUE, 302);

但是要回答你的问题,是的,如果你没有首先添加斜杠或完整的 URL,它会重定向到当前文件夹中的页面 X。

我建议您对您所做的每个网站都这样做。在您的主文件(您使用的主 php 文件,如配置或其他文件)中,创建类似的内容:

define('URL', 'http://www.mywebsite.com/');

因此,当您创建重定向、链接或其他任何内容时,您可以这样做:

header('Location: '.URL.'yourpage.php?id=32', TRUE, 302);

编辑:2017 年 11 月。正如下面的 @jordanbtucker 所指出的,HTTP 规范已于 2014 年 6 月更新(这篇文章来自 2012 年),以允许在 Location 标头中使用相对 URI。


0
投票

最好的方法是

$server = $_SERVER['SERVER_NAME'];
$port = isset($_SERVER['HTTP_X_FORWARDED_PORT']) && !empty($_SERVER['HTTP_X_FORWARDED_PORT']) ? ':'. $_SERVER['HTTP_X_FORWARDED_PORT'] : '';
$protocol = $_SERVER['PROTOCOL'] = isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) ? "https://" : "http://";
$destination = 'some_script.php?la=2&po=2030';
$url = $protocol . $server . $port . $destination;
header('Location: '. $url, TRUE);

请记住,在发送任何实际输出之前必须调用 header()。

© www.soinside.com 2019 - 2024. All rights reserved.