加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP – 将页面重定向到没有协议的URL?

发布时间:2020-12-13 16:58:47 所属栏目:PHP教程 来源:网络整理
导读:我遇到了麻烦,不知道如何解决这个问题. 我有一个网站www.example.com.它正在移动浏览器上打开,我必须重定向到某个东西://在一个动作触发重定向后. 无论我怎么努力,我都无法重定向到某些东西://,当我这样做时: ?php header('Location:something://');
我遇到了麻烦,不知道如何解决这个问题.

我有一个网站www.example.com.它正在移动浏览器上打开,我必须重定向到某个东西://在一个动作触发重定向后.

无论我怎么努力,我都无法重定向到某些东西://,当我这样做时:

<?php header('Location:something://'); ?>我得到的是:http://www.example.com/something://. 我一直在尝试使用JS(location.replace.href,location.replace等),但也没有运气. 如何强制URL改变我想要的方式?

解决方法

RFC 2616说:

Location = “Location” “:” absoluteURI

其中absoluteURI在RFC 2396中指定.

absoluteURI   = scheme ":" ( hier_part | opaque_part )
  relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]

  hier_part     = ( net_path | abs_path ) [ "?" query ]
  opaque_part   = uric_no_slash *uric

  uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
                  "&" | "=" | "+" | "$" | ","

  net_path      = "//" authority [ abs_path ]
  abs_path      = "/"  path_segments

  authority     = server | reg_name

  reg_name      = 1*( unreserved | escaped | "$" | "," |
                      ";" | ":" | "@" | "&" | "=" | "+" )

  server        = [ [ userinfo "@" ] hostport ]
  userinfo      = *( unreserved | escaped |
                     ";" | ":" | "&" | "=" | "+" | "$" | "," )

  hostport      = host [ ":" port ]
  host          = hostname | IPv4address
  hostname      = *( domainlabel "." ) toplabel [ "." ]
  domainlabel   = alphanum | alphanum *( alphanum | "-" ) alphanum
  toplabel      = alpha | alpha *( alphanum | "-" ) alphanum
  IPv4address   = 1*digit "." 1*digit "." 1*digit "." 1*digit
  port          = *digit

由此,如果您使用的是://协议,则需要指定权限部分 – 斜杠不能是字符串的最后部分,例如东西://例子

但是,最终调用重定向的位置始终是客户端的浏览器,出于安全原因,可能会拒绝重定向到非HTTP(S)URL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读