wordpress - 将站点从 http 迁移到 https 和 SSL

标签 wordpress ssl ssl-certificate

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

我现在正在与房东合作,我认为我需要更多的动手能力。

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

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

谢谢

最佳答案

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

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

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

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

是的,我同意你的观点,即 WP Force SSL 插件对网站产生了奇迹,我已经尝试过了,但我并没有从中吸取教训,但我仍然会尝试一下。此时,您的“https://example.com”将完美运行

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

  1. 重复上面的步骤 1 和 2。
  2. 请不要离开您的数据库,我们需要使用 SQL 查询在 MySQL 中进行搜索和替换。我在下面的 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 服务器,上述代码将无法正常工作。如果需要,我可以分享程序。

关于wordpress - 将站点从 http 迁移到 https 和 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904468/

相关文章:

php - Wordpress - 使用基于 MySQL View 中的数据的表创建帖子

php - 从 Wordpress 数据库中检索和显示数据

apache - 如何确保 Apache 始终通过 HTTPS 提供单个页面?

ios - 如何使用 NSURLConnection 与 SSL 连接以获得不受信任的证书?

ssl - 代码签名证书不起作用

wordpress - 已更改 SSL 证书 - 旧证书仍在缓存中

wordpress 仅显示用户已在 wp_editor 中上传的媒体

java - 不将javax.net.ssl.trustStore设置为系统属性的JMX SSL连接

ssl - webview_flutter "Failed to validate the certificate chain"SSL握手失败错误

azure - 如何使用 Let's Encrypt 为自定义域设置 SSL 生成器