将网站迁移到http到https和SSL

时间:2017-01-27 23:06:34

标签: wordpress ssl ssl-certificate

我过去很幸运,因为我必须将网站从HTTP迁移到HTTPS并安装一个SSL证书,我的主机会这样做,一切正常。

我现在正在与主持人合作,我认为我需要更多的动手。

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

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

由于

1 个答案:

答案 0 :(得分: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的页面。
  7. 是的,我同意你的观点,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]
      

    4. 中给出的任何一种方法

      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服务器,则上述代码将无法使用。如果需要,我可以分享程序。