这是一个常见的问题。不幸的是,这只是将Wordpress站点错误地移动到新url的众多可能症状之一。解决方案是确保Wordpress(核心、插件和主题)和web服务器都使用相同的URL。
如果您有登台站点的SSL证书(听起来像是这样),那么您可能希望在站点URL中使用https,例如https://staging.example.com
首先,通过将这些行添加到最顶端,强制Apache使用https。htaccess文件
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nginx忽略Apache。htaccess文件。如果您使用Nginx,请在谷歌上搜索“Nginx force https”,或参阅托管提供商的文档,以获取将Nginx配置文件更新为强制https的说明。
登录Wordpress Dashboard->Settings->General并同时设置
WordPress Address (URL)
和Site Address (URL)
到
https://staging.example.com
记下当前的url设置是什么-以后可能需要它。我会用
http://www.example.com
在我的例子中。如果站点过去有多个url,请为每个旧url运行搜索替换。
在许多情况下,这将解决问题。如果没有,它可以走得更深。
检查中是否未覆盖数据库设置wp-config.php
或functions.php
如Wordpress文档所述https://wordpress.org/support/article/changing-the-site-url/#changing-the-site-url
如果仍然存在问题,您可能需要更新对数据库中旧url的所有引用,以修复主题和/或插件。通过互连,您可以使用优秀、免费的数据库搜索和替换工具https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ 它同时提供web和命令行界面。
另一种命令行工具是优秀的免费WP CLIhttps://developer.wordpress.org/cli/commands/search-replace/
如果你最终做了大量的Wordpress工作,WP CLI将是你最好的朋友
使用您选择的搜索替换工具将旧url更新为临时url。在本例中,
http://www.example.com
-> https://staging.example.com
你为什么需要这样做?一些主题和插件开发人员将插件最初安装在站点上时的“站点URL”值保存在wp\\u options数据库表中的序列化PHP数组中。当您在仪表板设置中更新url时,它只适用于wp\\U选项中的Wordpress核心设置,而不适用于插件/主题设置。这可以说是插件/主题开发人员的错误行为,但并不少见。
不能使用简单的MySQLREPLACE()
更新wp\\u选项中的字符串,因为它将破坏序列化的PHP数组。需要使用知道如何处理序列化PHP数据的工具进行更改,因此需要使用Interconnect或WP CLI工具。
在某些情况下,即使所有这些都是不够的。一些主题和插件开发人员在存储url之前会对url进行json或url编码,因此您也需要对这些编码的url进行额外的搜索替换。例如,替换
http:\\\\/\\\\/www.example.com
-> https:\\\\/\\\\/staging.example.com
和
http%3A%2F%2Fwww.example.com
-> https%3A%2F%2Fstaging.example.com
Wordpress在很多事情上都做得很好,但将Wordpress网站移动到新的url可能是Wordpress无法发挥作用的地方。