我需要做什么才能将我的多站点从HTTP转换为HTTPS?

时间:2015-11-12 作者:rugbert

我的任务是将我的多站点实例中的大约100个站点转换为HTTPS。

我可以很容易地编写一个脚本来点击DB并更改siteurlhome 值,哪个inturn应该强制站点将脚本和未来嵌入的图像排队到HTTPS,对吗?

我还需要检查所有内部链接的post\\u内容,以及使用HTTP的图像,并将其转换为HTTPS。

我可能会想出一些办法来做到这一点,但我想知道我还需要改变什么。GUID对吗?如果我使用$wpdb命令,我是否需要在之后重新序列化数据库?

我应该先问一下,有没有可靠的插件可以帮我解决这个问题?关于这个过程,我还需要知道什么?

注意-我们已经有了所有的SSL证书,所以这是我不必担心的事情。-服务器正在运行linux(redhat)和apache-多站点正在使用子目录-我不知道还有多少其他内容,但服务器不在我的管辖范围内

5 个回复
SO网友:The J

如果需要干净的设置,可以运行脚本将所有URL和GUID更新为https。

但也要考虑其他选择,如:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>
在wp配置中。后端php:

define(\'FORCE_SSL_ADMIN\', true);
在wp配置中。前端的php(或运行db更新脚本):

define(\'WP_HOME\',\'https://example.com\');
define(\'WP_SITEURL\',\'https://example.com\');
然后,您只需运行一个脚本来更新所有wp\\U帖子的内容url。

SO网友:John Lucey

这个过程实际上涉及到购买一个安全证书并将其应用到网站的服务器上。这将反过来迫使所有访问的人通过服务器提供的证书进入安全连接。这些证书称为SSL证书:http://www.DigiCert.com/SSL-Certificates

SO网友:David

进行此数据修改的一种可能方法是使用WP-CLI 在终端上。

首先,您应该确保有备份和可靠的恢复策略,以防出现任何问题。您还应该在本地或使用实时数据库副本的测试系统上测试此过程。

基本步骤是迭代网络的每个站点,并使用WP-CLI替换每个站点的URLsearch-replace command.

这里有一句俏皮话:

for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
让我们检查一下:

for SITE in $(wp site list --field=url);
其中一个为内部命令输出的每一行启动一个循环$() 并在变量中写入每一行$SITE.

$(wp site list --field=url)
这就是WP-CLIsite list command 这将为您提供网络中所有站点URL的列表。单独运行此命令,您可能会看到如下内容:

http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
现在

...); do
将只启动内环部分。

内部循环命令发挥了所有的魔力(我使用\\ 可读性):

wp search-replace "$SITE" "${SITE/http:/https:}" \\
--dry-run --precise --network --verbose
我们告诉WP-CLI搜索$SITE (例如。https://your-site.tld/) 并将其替换为稍加修改的版本:${SITE/http:/https:}. 这是一个bash string replaces操作http: 具有https:. (因此,解析变量时,命令如下所示wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replace 中介绍了许多可能的选项documentation. 在示例中,我使用了以下内容:

--dry-run --precise --network --verbose
--dry-run--verbose 显然有助于测试命令。

--network 将搜索和替换操作也应用于网络选项卡。

--precise 告诉WP-CLI使用PHP而不是SQL来搜索和替换值。这样可以确保序列化的值不会损坏。

最后,使用

; done
让我再次强调一点:在开始将其用于生产之前,请对此进行深入测试。您应该了解它的工作原理以及WP-CLI的功能。之前我使用WP-CLI执行这种searach和replace操作,将多站点迁移到其他域名,但不切换httphttps.

可能存在一些边缘情况:WP-CLI仍然读取wp-config.php 并尝试使用中的常量在数据库中查找匹配的«网络»wp-config.php. 如果您操作的是一个站点(数据库),而不是另一个站点(中的常量wp-config.php) 你可能会遇到麻烦。但对于您的情况,我认为这不会成为WP通常依赖的问题DOMAIN_CURRENT_SITEPATH_CURRENT_SITE 他们无论如何都不会改变。不过,还是要彻底测试一下。

使用更多的bash魔法,您还可以将此循环拆分为5个或10个站点的块,并逐步进行。

SO网友:Ethan O\'Sullivan

确保您的所有网站在post_content, 您可以执行以下两个选项之一:

1。后端:执行SQL查询要确保所有HTTP链接都设置为HTTPS,请使用以下SQL查询:

UPDATE wp_options SET option_value = replace(option_value, \'OLD_URL\', \'NEW_URL\') WHERE option_name = \'home\' OR option_name = \'siteurl\';
UPDATE wp_posts SET guid = replace(guid, \'OLD_URL\',\'NEW_URL\');
UPDATE wp_posts SET post_content = replace(post_content, \'OLD_URL\', \'NEW_URL\');
UPDATE wp_postmeta SET meta_value = replace(meta_value,\'OLD_URL\',\'NEW_URL\');
  • OLD_URL 将替换为http://example.com (非HTTP)NEW_URL 将替换为https://example.com (HTTPS)
这将涵盖siteurl, home, 并将您网站上的所有内容转换为新的HTTPS。

2。前端:使用Search & Replace 插件更方便用户的方法是使用Search & Replace 插件可以轻松替换包含旧HTTP的所有表,并将它们更改为HTTPS。该过程易于使用,您可以在应用这些更改之前预览哪些表和行将受到影响。

在应用任何更改之前,我认为不言而喻,总是要备份数据库,以防出现问题。

SO网友:Harshita

HTTP是一种默认协议,大多数网站都使用它来处理web上的信息。您的网站在HTTPS上运行,没有任何错误消息,这意味着您的证书已正确安装。您应该将整个网站从HTTP迁移到HTTPS。

Learn how to move HTTP to HTTPS for WordPress

相关推荐

Wp-login.php?reDirect_to=HTTPS问题

wp登录。php?redirect\\u to=https问题如果我在错误的地方发帖,请原谅我,但我在这里是想看看你是否能在你的时间里帮我几分钟。问题是,一个网站在wp登录时显示出持续的内部错误。php。我能够登录并访问前端,没有任何困难。我尝试过调试,但错误没有显示在任何页面上。我测试了主题、插件等,etcI检查了htaccess文件是否存在损坏(没有损坏),我将htaccess文件设置为调试和显示,但没有显示任何内容。我确实检查了服务器端的调试文件,它显示了一个插件的一些错误,当我停用该插件时,内部错