【问题标题】:www.example.com not redirecting to HTTPSwww.example.com 未重定向到 HTTPS
【发布时间】:2017-07-27 04:32:13
【问题描述】:

当我们在浏览器地址栏中输入example.com 时,它将重定向到https://example.com,并且内页也正常工作(重定向到https 站点),

问题 1:

当我们在浏览器地址栏中输入www.example.com 时,它不会重定向到https://www.example.com 并且没有https 的站点加载,但内页会重定向到https

问题 2:

https://example.com/file.php 显示当前内容,但 http://www.example.com/file.php 显示旧内容,我们在隐身模式下检查并清除缓存

问题3:(这可能是问题的根本原因)

当我们通过访问 url http://www.example.com/server.php 看到 $_SERVER 参数时,将 HTTPS 值显示为 on

我们print_r $_SERVERserver.php 文件中

环境:

  1. Godaddy VPS 服务器
  2. Apache 2.3.1(mod_rewrite 已启用)
  3. PHP 5.4.45
  4. WordPress
  5. 已配置有效的 SSL 证书 - 打开所需的端口 (80, 443)

在 Wordpress 设置中,

我们将Site urlHome page urlhttps 地址设置为https://example.com

我们在.htaccess 中使用了以下代码进行重定向

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^www\.example.com$
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [L,R=301]

我们还检查了以下网站,他们对SSL 显示了积极响应

https://www.sslshopper.com, whynopadlock.com

每次我们通过清除缓存和 cookie 进行检查

DNS 记录:

A(主机)

  1. 主机@指向xx.xx.xx.xx,TTL为600 Seconds

CName(别名)

  1. 主机www指向@,TTL为1 Hour

请建议我如何通过www.example.comhttps 解决此问题

【问题讨论】:

    标签: wordpress apache .htaccess ssl https


    【解决方案1】:

    我在 .htaccess 文件中使用以下代码将 http 请求重定向到 https。

    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
    RewriteCond %{HTTP_HOST} www.example.com
    RewriteRule ^.*$ https://www.example.com%{REQUEST_URI} [L,R=301]
    

    【讨论】:

    • 我们试过这段代码,它适用于子页面,但不适用于主页 (www.example.com),您能建议一下吗?
    • 尝试添加一行:RewriteRule .* - [L,F]
    【解决方案2】:

    RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST} 是一个无效条件,它永远不会返回 true,因为您不能在 RewriteCond 的模式中使用服务器变量。您可以使用基于正则表达式的模式,如下所示:

    RewriteCond %{HTTP_HOST} ^www\.example.com$
    

    【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2015-12-06
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多