将 wordpress 站点从实时设置到本地,URL 不起作用
Posted
技术标签:
【中文标题】将 wordpress 站点从实时设置到本地,URL 不起作用【英文标题】:Setup wordpress site from live to local, URLs are not working 【发布时间】:2018-09-05 19:47:27 【问题描述】:3/26:我在实时服务器上创建了 Wordpress 网站。我下载了一个副本到我的 XAMPP 服务器。我导出了数据库并创建了一个本地数据库。我修改了 wp-config.php 文件以连接到它。这一切都有效。但是,我无法使用导航栏中的任何链接,也无法打开任何页面和帖子。所有这些超链接都有使用实时服务器域名的绝对地址。我可以添加目录路径并转到本地主机下的“/index.php”,但所有其他路径都是以没有文件名的方式结束的,并且它们不起作用。如果我不使用“index.php”而只有一个“/”,它将不会进入主页。对于主页,如果我省略“index.php”文件名,它将有标题和导航栏,并说“糟糕!找不到那个页面。”如果我使用开放式链接指向其他任何内容,它会显示“建立数据库连接时出错。”
3/27:非常感谢大家的回复!我安装了一个尚未使用的插件,名为“Velvet Blues 更新 URL”。我会尝试一下。我也有“一体化 WP 迁移”和“复制器”,但网站大小超过 600mb,因此免费版本无法使用。
【问题讨论】:
确保您的重写已启用,并且一旦设置了永久链接就从管理员端进行 通过重新保存永久链接结构来修复您的.htaccess
文件。此外,仅导入数据库是没有意义的。您应该从 db.xml 中查找并替换所有 url。比如www.live-site.com
需要转换成www.development-site.com
【参考方案1】:
您可以通过编辑 wp-config.php 并定义 WP_HOME
和 WP_SITEURL
例如在本地安装中使用临时 URL。
define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');
【讨论】:
理论上这些步骤应该足够了,但是 WordPress 及其插件将硬编码的 URL 存储在数据库中。在域之间迁移站点时,我总是必须编辑 SQL。你可以阅读更多:codex.wordpress.org/Changing_The_Site_URL【参考方案2】:将 WP 从本地服务器移至实时服务器一直是一件令人头疼的事情。为此,这是我经常使用的插件,并且再也不会遇到任何问题。 https://fr.wordpress.org/plugins/duplicator/
您应该使用它来迁移您的网站。顺便说一句,如果您不使用该插件,您可以在迁移到 Live Server DB 之前在 DB 文件中查找替换所有 URL。
【讨论】:
【参考方案3】:我假设您已经在本地安装中克隆了数据库。如果是这种情况,您必须更新数据库中的所有条目以匹配本地安装的 url。
如果实时站点被称为http://example.com,您应该找到它的每一个匹配项并将其更改为http://localhost/my_install。
UPDATE wp_options SET option_value = replace(option_value, 'http://example.com', 'http://localhost/my_install') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://example.com', 'http://localhost/my_install');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://example.com', 'http://localhost/my_install');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://example.com', 'http://localhost/my_install');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://example.com', 'src="http://localhost/my_install');
UPDATE `wp_posts` SET `guid` = REPLACE( `guid` , 'http://example.com' , 'http://localhost/my_install' ) WHERE `post_type` = 'attachment';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://example.com', 'http://localhost/my_install') WHERE post_type = 'attachment';
这个 SQL 查询应该会为您做到这一点。只需将虚拟数据替换为实际数据即可。并重新保存永久链接结构(设置 -> 永久链接)。
【讨论】:
以上是关于将 wordpress 站点从实时设置到本地,URL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当管理面板中的“设置”已更改以准备转移到实时站点时,如何恢复 wordpress?