【问题标题】:migrating site to from http to https and SSL将站点从 http 迁移到 https 和 SSL
【发布时间】:2017-06-13 18:06:35
【问题描述】:

过去我很幸运,当我必须将站点从 HTTP 迁移到 HTTPS 并安装 SSL 证书时,我的主机会执行此操作并且一切正常。

我现在正在与一位主持人合作,我认为我需要更多的参与。

我在 Mysql 和 Apache 堆栈上使用 Wordpress。迁移它的正确方法是什么。通过数据库进行搜索和替换,然后通过 .htaccess 文件进行重定向?

目前,我的“https://example.com”正在工作。但是,对于 http 和 https 到“https://example.com”,处理从 www 到非 www 的重定向的正确方法是什么。有一些 Wordpress 插件可以“强制”SSL,但我听说这些插件可以做意想不到的事情。

谢谢

【问题讨论】:

    标签: wordpress ssl ssl-certificate


    【解决方案1】:

    首先,我将解释不使用 .htaccess 文件的过程: 假设你有你的 wordpress 网站,说“http://example.com”

    1. 安装 ssl 证书(按照 发行人)
    2. 转到您的数据库; wp_options 表和更改 'siteurl' 和 'home' 选项值以 https 开头,而不是 http 和 offcourse 保存更改。
    3. 登录到您的 WordPress 管理面板,然后转到 设置 » 常规。单击保存选项。这将确保在其他任何需要的地方更正网站网址。
    4. 然后转到设置 » 永久链接并点击保存以确保所有帖子链接都正常工作。

    5. 安装此插件Search & Replace 并激活。该插件应该通过更新路径来帮助修复图像和断开的链接,而无需您编写代码;这很不言自明。

    6. 安装此插件Easy HTTPS Redirection 并激活。无论什么,此插件都会将所有流量从 http 重定向到 https;您还可以定义不想强制 https 的页面。

    是的,我同意你的观点,WP Force SSL 插件对网站有很大的好处,我已经尝试过了,但我没有学到任何教训,但我还是会尝试一下。此时,您的“https://example.com”将完美运行

    其次,我将解释在不使用任何插件的情况下执行相同的过程。我的假设和上面一样。

    1. 重复上述第 1 步和第 2 步。
    2. 不要离开你的数据库,我们需要在 MySQL 中使用 SQL Query 进行搜索和替换。我在下面的 SQL 查询中列出了一些需要替换的东西

      UPDATE wp_posts 
      SET guid = replace(guid, 'http://example.com', 'https://example.com');
      
      UPDATE wp_posts 
      SET post_content = replace(post_content, 'http://example.com', 'https://example.com');
      
      UPDATE wp_postmeta 
      SET meta_value = replace(meta_value,'http://example.com', 'https://example.com');
      

      注意:根据您拥有的表,对每个表进行搜索和替换总是好的

    3. 要从 http 重定向到 https,我们将使用 .htaccess 文件。在您的 .htaccess 文件中使用 mod_rewrite 尝试以下操作

      RewriteEngine On
      RewriteCond %{HTTPS} !=on
      RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
      

      或在

      中给出的各种方法中的任何一种

    http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html

    如果您的提供商禁用了.htaccess,您也可以在 PHP 中解决此问题(这不太可能,因为您要求它,但无论如何)

    if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
        if(!headers_sent()) {
            header("Status: 301 Moved Permanently");
                header(sprintf(
                'Location: https://%s%s',
                $_SERVER['HTTP_HOST'],
                $_SERVER['REQUEST_URI']
            ));
            exit();
        }
    }
    

    到目前为止,这两种方法 https 应该都能正常工作。

    然后,要将非 www 重定向到 www,请直接在 .htaccess 文件中的 RewriteEngine On 下面使用以下代码:

    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
    

    对于 www 到非 www,使用:

    RewriteCond %{HTTP_HOST} ^www.example.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
    

    如果您使用的是 Windows IIS 服务器,上述代码将不适合您。如果需要,我可以分享过程。

    【讨论】:

    • 很好的答案,谢谢!。我标记为接受。一个问题。最后一部分你正在做 www 到非 www 这也可以通过大多数主机的 cpanel 来完成,并带有 301 重定向,对吗?同样的事情。
    • 是的,可以做到。如果您使用的是专用服务器,使用它会更有趣;意思是你的一切之王。但我仍然在几个主机上看到它
    猜你喜欢
    • 2016-07-28
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多