【问题标题】:Wordpress www to non www domain migrationWordpress www 到非 www 域迁移
【发布时间】:2016-09-30 14:50:30
【问题描述】:

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

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 需要做更多的工作吗?

【问题讨论】:

标签: wordpress ssl migration mixed-content


【解决方案1】:

除了手动编辑所有 页面内的链接,因为这是一个大网站,我没有 是时候一一编辑链接了。

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

然后使用Firefox(或Firebug)或ChromeSafariIE中的开发人员工具来查看您网站上仍然不安全地加载的内容。

您可能需要更改 functions.php 和样式表中的硬编码 URL。如果其中有绝对 URL,您可以将 http 更改为 https,或删除 http: 以使 URL 协议不可知,即,将 http://example.com/jquery.js 更改为 //example.com/jquery.js

【讨论】:

  • 我在大约 2 年前使用过这个互联产品,现在还能用吗?可靠吗?这是一个非常庞大的网站,大约 500mb 个文件。 600 个 wordpress 页面和 20 个活动插件
【解决方案2】:

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

  • 在您的帖子内容中
  • 用于 guid(页面/帖子/媒体/...的 URL)

重要提示:在做类似的事情之前总是保存你的数据库(以防万一)。

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

# 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/

【讨论】:

  • 像这样运行 SQL 查询是个坏主意;您将在数据库中破坏序列化数据 - 在 wp_options、主题和小部件选项中。无论如何,插件请求问题都是题外话。
  • 感谢您的回答。 301重定向会解决这个问题吗?如果不是那么也许我会尝试编辑数据库,但我认为序列化数据会有问题
  • 我认为任何序列化数据都不会受到第一个请求的影响,因为我仅在未存储为序列化字符串的“home”和“siteurl”选项上限制请求的操作: "WHERE option_name = 'home' OR option_name = 'siteurl';"
  • 阅读该 wpbeaches 博客文章的其余部分;它特别指出序列化数据将使用该方法中断
猜你喜欢
  • 2011-12-18
  • 2018-05-26
  • 2012-10-17
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
相关资源
最近更新 更多