各种PHP问题

各种PHP问题,php,http-status-code-301,http-status-codes,Php,Http Status Code 301,Http Status Codes,关于此功能: function requireSSL() { if($_SERVER['SERVER_PORT'] != 443) { header("HTTP/1.1 301 Moved Permanently"); header("Location: https://" . $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']); exit; } return fals

关于此功能:

function requireSSL() {     

    if($_SERVER['SERVER_PORT'] != 443) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: https://" . $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']);
        exit;
    }
    return false;
}
SSL需要端口443,所以在这段代码中,如果不是443,那么是否强制使用https?如果是443,它会自动使用https。被永久移动的设备是用来做什么的

  • 代码
    标题(“位置:”)

    上面的内容有什么用,只不过是告诉它保持在同一页上。默认情况下,它应该保持在同一页上,不是多余的吗


  • 如果客户端不使用
    https
    ,此代码将重定向客户端以使用
    https
    301
    告诉客户端始终使用新位置


    重定向是通过
    位置
    标题完成的,您只对了一部分,页面是相同的,但连接是通过
    https
    完成的,而不是
    http
    。如果客户端已通过
    https
    连接,则不会发生重定向。

    如果客户端未使用
    https
    ,此代码将重定向客户端以使用
    https
    301
    告诉客户端始终使用新位置

    重定向是通过
    位置
    标题完成的,您只对了一部分,页面是相同的,但连接是通过
    https
    完成的,而不是
    http
    。如果客户端已通过https连接,则不会发生重定向。

    1)HTTP/1.1 301用于让浏览器和搜索引擎知道页面已移动到

    2) 此代码用于需要SSL的特定页面或站点。示例:购物车、银行、登录HTTP/1.1 301用于让浏览器和搜索引擎知道页面已移动到


    2) 此代码用于需要SSL的特定页面或站点。示例:购物车、银行、登录默认情况下HTTPS通过端口443。如果用户通过普通HTTP进行访问,则此代码使用位置头将用户重定向到HTTPS

    301指示浏览器在该URL上的后续请求中始终将HTTP重定向到HTTPS

    在psuedo代码中,它执行以下操作:

    if (user is NOT visiting through HTTPS)
      redirect permanently to the same URL, but then through HTTPS
    

    因此,它不是多余的,因为如果有人使用HTTPS访问该页面,则不会执行if块的主体,也不会发生重定向。

    默认情况下,HTTPS通过端口443。如果用户通过普通HTTP进行访问,则此代码使用位置头将用户重定向到HTTPS

    301指示浏览器在该URL上的后续请求中始终将HTTP重定向到HTTPS

    在psuedo代码中,它执行以下操作:

    if (user is NOT visiting through HTTPS)
      redirect permanently to the same URL, but then through HTTPS
    
    所以不,这不是多余的,因为如果有人使用HTTPS访问该页面,if块的主体将不会执行,也不会发生重定向

    SSL需要端口443

    不总是这样。这是默认端口。HTTPS可以配置为在其他端口上运行。更好的检查方法是:

    if ( !isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on') {
    
    }
    
    被永久移动的设备是用来做什么的

    发件人:

    已为请求的资源分配了新的永久URI和任何 将来对此资源的引用应使用返回的 URI

    换句话说,浏览器应该记住所请求的URI已被移动,并在用户再次请求旧URI时请求新URI

    默认情况下,它应该保持在同一页上,不是多余的吗

    代码并不是这样做的。当用户请求非https版本时,它将重定向到https版本

    SSL需要端口443

    不总是这样。这是默认端口。HTTPS可以配置为在其他端口上运行。更好的检查方法是:

    if ( !isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on') {
    
    }
    
    被永久移动的设备是用来做什么的

    发件人:

    已为请求的资源分配了新的永久URI和任何 将来对此资源的引用应使用返回的 URI

    换句话说,浏览器应该记住所请求的URI已被移动,并在用户再次请求旧URI时请求新URI

    默认情况下,它应该保持在同一页上,不是多余的吗


    代码并不是这样做的。当用户请求非https版本时,它将重定向到https版本。

    首先,该函数按照您的想法执行

    让我们逐一了解您想了解的内容:

    header("HTTP/1.1 301 Moved Permanently");
    
    这将设置HTTP响应状态代码。代码:301。消息:
    已永久移动
    301是一个永久重定向,它只是告诉浏览器(HTTP客户端),下次直接使用新地址而不是请求的地址

    新地址带有
    位置:
    标题

    header("Location: .");
    

    这个代码完全是错误的代码。别指望它能奏效。我假设有人想再次重定向到同一页,但这种方式不起作用。
    位置:
    后面需要跟一个绝对URL,这是一个相对URL,不起作用。绝对URL总是以
    http://
    https://
    开头,并包含主机名。

    首先,函数按照您的想法执行

    让我们逐一了解您想了解的内容:

    header("HTTP/1.1 301 Moved Permanently");
    
    这将设置HTTP响应状态代码。代码:301。消息:
    已永久移动
    301是一个永久重定向,它只是告诉浏览器(HTTP客户端),下次直接使用新地址而不是请求的地址

    新地址带有
    位置:
    标题

    header("Location: .");
    

    这个代码完全是错误的代码。别指望它能奏效。我假设有人想再次重定向到同一页,但这种方式不起作用。
    位置:
    后面需要跟一个绝对URL,这是一个相对URL,不起作用。绝对URL总是以
    http://
    https://
    开头,并包含主机名。

    FWIW,您可能应该为此问两个不同的问题,因为它们完全不同。你会得到更具体的+更好的答案