Wordpress www到非www域迁移

时间:2016-09-30 14:50:30

标签: wordpress ssl migration mixed-content

我有一个wordpress网站www.domain.com,我们刚刚购买了SSL证书,但它只在domain.com上工作(没有www)。我已经配置了.htaccess和网站网址

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301,NC]

这可行但我的wordpress网站的页面仍然在我的网站上有链接(例如图片www.domain.com/uploads/images/01.jpg),这会引起用户的警告,因为它不是完成https。有没有办法解决这个问题,除了手动编辑页面内的所有链接,因为这是一个很大的网站,我没有时间逐个编辑链接。有插件吗?我也对使用插件犹豫不决,但如果有一个可用的插件,我可以尝试一下。

我读到了301重定向,但我认为它不会起作用,因为链接保存在数据库中? (我真的不确定)如果301重定向工作有什么不利/优势呢?例如。内存问题,更多的CPU工作?

2 个答案:

答案 0 :(得分:0)

  

有没有办法解决这个问题,而不是手动编辑所有   页面内的链接,因为这是一个大网站,我没有   是时候一个一个地编辑链接。

使用https://interconnectit.com/products/search-and-replace-for-wordpress-databases/使用该脚本,您可以有选择地扫描您的帖子/页面内容,选项表等,以便更改URL。此工具将正确地反序列化/重新序列化主题选项,窗口小部件选项等中的数据,因此您的主题设置不会中断。在PHPMyAdmin或Adminer中使用SQL查询将破坏序列化数据。

然后使用Firefox(或Firebug)或ChromeSafariIE中的开发者工具查看仍未安全加载的内容你的网站。

您可能需要更改functions.php和样式表中的硬编码网址。如果其中包含绝对网址,您可以将http更改为https,或删除http:以使网址协议无关,即将http://example.com/jquery.js更改为{ {1}}

答案 1 :(得分:-1)

您需要在数据库中执行一些请求以更新存储的所有网址:

  • 在您的帖子内容中
  • for guids(网页/帖子/媒体/...)

重要提示:在执行此类操作之前,请务必保存您的数据库(以防万一)。

以下是我在这种情况下使用的请求:

# change the default prefix "wp_" by your actual prefix.

# update site url in "wp_options" table
UPDATE `wp_options`  
SET option_value = REPLACE(option_value, 'http://www.oldurl', 'http://www.newurl') 
WHERE option_name = 'home' 
OR option_name = 'siteurl';



# update "guid" in "wp_posts" table
UPDATE `wp_posts` 
SET guid = REPLACE(guid, 'http://www.oldurl','http://www.newurl');



# update "post_content" in "wp_posts" table
UPDATE `wp_posts` 
SET post_content = REPLACE(post_content, 'http://www.oldurl', 'http://www.newurl');



# Update "meta_value" in "wp_postmeta"
UPDATE `wp_postmeta`  
SET meta_value = REPLACE(meta_value,'http://www.oldurl','http://www.newurl');

您只需使用适当的值自定义这些请求,然后通过PHPMyAdmin执行这些请求。

请求的原始来源:https://wpbeaches.com/updating-wordpress-mysql-database-after-moving-to-a-new-url/