在 WordPress 单站点安装的设置 -> 常规屏幕上,有两个字段名为“WordPress 地址 (URL)”和“站点地址 (URL)”。它们是重要的设置,因为它们控制 WordPress 的位置。这些设置控制页面管理部分以及前端中 URL 的显示,并在整个 WordPress 代码中使用。
- “站点地址 (URL)”设置是您希望人们在浏览器中键入以访问您的 WordPress 博客的地址。
- “WordPress 地址 (URL)” 设置是您的 WordPress 核心文件所在的地址。
注意:这两个设置都应该包括 http:// 部分,并且最后不应该有斜线“/”。
每隔一段时间,就会有人发现需要手动更改(或修复)这些设置。通常,当他们更改其中一项或两项并发现他们的网站不再正常工作时,就会发生这种情况。这会使用户无法轻松发现纠正问题的方法。本文告诉您如何直接更改这些设置。
此处为您将 WordPress 从一个站点移动到另一个站点的情况提供了其他信息,因为这也需要更改站点 URL。如果您只是尝试更正“损坏的”网站,则不应尝试使用这些附加信息。
警报!这些说明仅适用于 WordPress 的单次安装。如果您使用的是 WordPress MultiSite,则需要手动编辑数据库。
更改站点 URL #
有四种简单的方法可以手动更改站点 URL。这些方法中的任何一种都可以工作并执行相同的功能。
编辑 wp-config.php #
可以在wp-config.php
文件中手动设置站点 URL。
将这两行添加到您的 wp-config.php,其中“example.com”是您网站的正确位置。
define( 'WP_HOME' , 'http://example.com' ); define( 'WP_SITEURL' , 'http://example.com' ); |
这不一定是最好的解决方法,它只是将值硬编码到站点本身中。使用此方法时,您将无法再在常规设置页面上编辑它们。
编辑functions.php #
如果您可以通过FTP访问该站点,那么如果您错误地更改了这些值,此方法将帮助您快速恢复并运行站点。
- FTP 到站点,并获取活动主题
functions.php
文件的副本。您将在一个简单的文本编辑器中对其进行编辑并将其上传回站点。 - 将这两行添加到文件中,紧跟在最初的“<?php”行之后:
update_option( 'siteurl' , 'http://example.com' ); update_option( 'home' , 'http://example.com' ); |
显然,使用您自己的 URL 而不是 example.com。
3. 将文件上传回您的站点,在同一位置。FileZilla 提供了一个方便的“编辑文件”功能,可以快速完成上述所有操作;如果您可以使用它,请这样做。
4. 加载登录或管理页面几次。该网站应该会恢复。
重要的!不要将此代码留在functions.php
文件中。在站点启动并再次运行后将其删除。
注意:如果您的主题没有文件,请使用文本编辑器functions.php
创建一个新文件。添加 <?php 标记和使用您自己的 URL 而不是 example.com 的两行:
123 | <?php update_option( 'siteurl' , 'http://example.com' ); update_option( 'home' , 'http://example.com' ); |
将此文件上传到您的主题目录。站点启动并再次运行后,删除行或删除文件。
基于 LAN 的站点到外部可访问的站点 #
以下是一些额外的详细信息,可指导您将基于 LAN 的 WordPress 站点转移到外部可访问的站点,以及允许从 LAN 内部编辑 wordpress 站点。
两个重要的关键是路由器/防火墙修改和最后进行更改后的“等待 10 分钟以上”。
使用 ssh 登录您的服务器(nano 是服务器预装的文本编辑器)
$ nano /var/www/books/wp-content/themes/twentyeleven/functions.php
在 <?php 之后添加行
update_option( 'siteurl' , 'http://your.site.url:port/yourblog' ); update_option( 'home' , 'http://your.site.url:port/yourblog' ); |
使用您的外部网站 URL 刷新您的网络浏览器:
http://your.site.url:port/yourblog
$ nano /var/www/books/wp-content/themes/twentyeleven/functions.php
删除您刚刚添加的那些行(或将它们注释掉)
访问您的路由器,这些步骤适用于 pfSense,其他路由器应该有类似的设置来寻找/注意)
在防火墙/nat 表中添加这样的一行
wan/tcp/port/LAN.server.IP/80
在防火墙/规则表中添加这样的一行
tcp/*/port/LAN.server.IP/port/*
取消选中系统/高级/网络地址转换/禁用 NAT 反射框
"Disables the automatic creation of NAT redirect rules for access to your public IP addresses from within your internal networks. Note: Reflection only works on port forward type items and does not work for large ranges > 500 ports."
然后去做十分钟的事情,当你回来时,看看来自 LAN 浏览器的外部 url http://your.site.url:port/yourblog 是否正确地打开了页面。
搬迁方法 #
WordPress 支持一种自动重定位方法,旨在在将站点从一台服务器重定位到另一台服务器时快速帮助站点正常工作。
代码功能 #
当 RELOCATE 在wp-config.php
(见下一章)中定义为真时,wp-login.php 中的以下代码将采取行动:
12345678 | if ( defined( 'RELOCATE' ) AND RELOCATE ) { // Move flag is set if ( isset( $_SERVER [ 'PATH_INFO' ] ) AND ( $_SERVER [ 'PATH_INFO' ] != $_SERVER [ 'PHP_SELF' ]) ) $_SERVER [ 'PHP_SELF' ] = str_replace ( $_SERVER [ 'PATH_INFO' ], "" , $_SERVER [ 'PHP_SELF' ] ); $url = dirname( set_url_scheme( 'http://' . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'PHP_SELF' ] ) ); if ( $url != get_option( 'siteurl' ) ) update_option( 'siteurl' , $url ); } |
脚步 #
- 编辑
wp-config.php
文件。 - 在“define”语句之后(就在“就是这样,停止编辑!”的注释行之前),插入一个新行,然后键入:
define('RELOCATE',true);
- 保存您的 wp-config.php 文件。
- 打开 Web 浏览器并手动将其指向
wp-login.php
新服务器。例如,如果您的新站点位于http://www.yourdomainname.com
,则http://www.yourdomainname.com/wp-login.php
在浏览器的地址栏中键入。 - 正常登录。
- 查看 Web 浏览器的地址栏,确认您确实登录到了正确的服务器。如果是这种情况,则在管理后端中,导航到设置 > 常规并验证两个地址设置是否正确。记得保存更改。
- 修复此问题后,编辑
wp-config.php
并完全删除您添加的行(删除整行),将其注释掉(使用//
)或将true
值更改为false
如果您认为您可能会再次重新定位。
注意:当 RELOCATE 标志设置为 true 时,站点 URL 将自动更新为您用于访问登录屏幕的任何路径。这将使管理部分在新 URL 上启动并运行,但不会更正设置的任何其他部分。您仍然需要手动更改这些内容。
重要的!在 wp-config.php 文件中保留 RELOCATE 常量是不安全的,因为它允许攻击者在某些配置中将您的站点 URL 更改为他们想要的任何内容。完成后,请务必从 wp-config.php 中删除 RELOCATE 行。
直接在数据库中更改 URL #
如果您知道如何在您的主机上访问 phpMyAdmin,那么您可以直接编辑这些值以使您的站点重新启动并运行。
- 备份您的数据库并在异地保存副本。
- 登录到phpMyAdmin。
- 单击指向您的数据库的链接。
- 将出现您的数据库列表。选择您的 WordPress 数据库。
- 数据库中的所有表都将出现在屏幕上。
- 从列表中查找
wp_options
。注意:wp_
如果安装时更改了表前缀,可能会有所不同。 - 单击指示为Browse的小图标。
- 将打开一个屏幕,其中包含表中的字段
wp_options
列表。 - 在该字段下
option_name
,向下滚动并查找siteurl
。 - 单击通常位于行首最左侧的“编辑字段”图标。
- 将出现“编辑字段”窗口。
- 在 的输入框中
option_value
,小心地将 URL 信息更改为新地址。 - 验证这是正确的,然后单击执行以保存信息。
- 你应该回到你的
wp_options
桌子上。 - 在表中查找
home
字段,然后单击编辑字段。注意里面有几页表格wp_options
。寻找>
符号来翻阅它们。 - 在 的输入框中
option_value
,小心地将 URL 信息更改为新地址。 - 验证这是正确的,然后单击执行以保存信息。
移动站点 #
在将站点从一个位置移动到另一个位置时,有时需要手动修改数据库中的数据以正确识别新站点的 URL 信息。有许多工具可以帮助解决这个问题,通常应该使用这些工具而不是手动修改。
此处仅作为信息提供。此数据可能不完整或不准确。
如果尝试将 WordPress 从一个系统移动到另一个系统, 您应该首先阅读移动 WordPress文章。
更改表前缀 #
像许多 WordPress 管理员一样,您可能使用各种wp-config.php
hack 在一个数据库上运行多个 WordPress 安装。其中许多技巧都涉及动态设置表前缀,如果您最终更改了表前缀,则还必须更新prefix_usermeta表中的几个条目。
与上一节一样,请记住 SQL 更改是永久性的,因此您应该首先备份数据库:
如果您要更改站点的表前缀,请记住也要更改 usermeta 表中的表前缀。这将允许新站点正确识别旧站点的用户权限。
UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE ( `meta_key` , 'oldprefix_' , 'newprefix_' ); |
更改模板文件 #
在您的WordPress 主题中,打开每个模板文件并搜索任何手动输入的对旧域名的引用并将其替换为新域名。查找您可能在各种模板文件(例如sidebar.php
和footer.php
. WordPress 使用一个名为的模板标签,根据在“管理” > “设置” > “常规”面板bloginfo()
中输入的信息自动生成您的站点地址。不必修改模板文件中的标签。
更改配置文件 #
如果您的数据库以某些方式移动或更改,您将需要更新您的 WordPress 配置文件。
- 您只需在以下情况下修改配置文件:
- 您的数据库已移至另一台服务器,并且未在您的服务器上运行
localhost
- 您已重命名数据库
- 您已更改数据库用户名
- 您的数据库已移至另一台服务器,并且未在您的服务器上运行
- 制作文件的备份副本
wp-config.php
。 - 在文本编辑器中打开
wp-config.php
文件。 - 查看其内容。特别是,您正在寻找数据库主机条目。
- 保存文件。
此时,您的 WordPress 博客应该可以正常工作了。
验证配置文件 #
- 在您的 管理 > 设置 > 常规 面板中,您将验证您在上面更改 URL 中所做的更改是否正确。
- 验证您的WordPress 地址 (URL)中的引用是否包含新地址。
- 验证您的站点地址 (URL)中的引用是否包含新地址。
- 如果您进行了更改,请单击保存更改。
更改 .htaccess 文件 #
在“管理” > “设置” > “常规”面板中更改信息后,.htaccess
如果您使用永久链接或任何重写或重定向 ,则需要更新文件。
- 制作文件的备份副本
.htaccess
。这不是建议,而是要求。 - 在文本编辑器中打开
.htaccess
文件。 - 查看其内容,查找您输入的任何自定义重写或重定向。将这些复制到另一个文本文件以安全保存。
- 关闭文件。
- 按照永久链接子面板上的说明更新文件的永久链接
.htaccess
。 - 打开新
.htaccess
文件并检查您的自定义重写和重定向是否仍然存在。如果没有,请从保存的文件中复制它们并将它们粘贴到新的 .htaccess 文件中。 - 在这些自定义重写和重定向中进行任何必要的更改以反映新的站点地址。
- 保存文件。
- 测试这些重定向以确保它们正常工作。
如果您犯了错误,您可以从备份中恢复您的数据库,然后再试一次。所以第一次确保它是正确的。
额外注意事项 #
为了在移动站点时更正 URL,您可能希望更改其他一些内容。
- 图片链接:图片链接存储在 wp_posts 表的“post_content”中。您可以使用上面的类似代码来更新图像链接。
- wp_options:除了上面提到的“siteurl”和“home”项外,还有其他option_value也需要修改,例如“上传路径”,以及一些插件项(取决于您安装的内容,例如widgets、stats、 DMSGuestbook、站点地图等)
- 要修复包含过时 URL 的小部件,您可以在仪表板/外观/小部件中编辑它们。
- 对剩下的任何项目进行完整的数据库搜索。确保你知道你正在改变什么。并仔细检查每个项目是否存在不当更换。
- 如果您正在运行一个网络/有多个站点,则需要替换数据库中 URL 的实例。它们存储在许多表中,包括每个站点(博客)。替换时要小心,并确保在更改之前知道该字段的含义。请参阅下面的重要 GUID 说明,了解不要更改的示例。
- 请注意,如果您在“dashboard_incoming_links”下的数据库选项表中找到您的旧网址,您可以忽略或删除该选项。从 WP 3.8 开始就没有使用过。
使用导出/导入功能将博客移至新域。
重要的 GUID 说明 #
执行上述操作并直接在数据库中更改 URL 时,您会遇到位于wp_posts
表中“guid”列中的 URL 实例。请勿更改此字段的内容,这一点至关重要。
术语“GUID”代表“全球唯一标识符”。它是一个字段,旨在保存帖子的标识符,它 a) 在整个空间和时间中是唯一的,并且 b) 永远不会改变。GUID 字段主要用于创建 WordPress 提要。
当提要阅读器阅读提要时,它使用 GUID 字段的内容来了解它之前是否显示过特定项目。它以多种方式之一执行此操作,但最常见的方法是简单地存储它已经显示并“标记为已读”或类似的 GUID 列表。
因此,更改 GUID 将意味着许多提要阅读器会突然将您的内容再次显示在用户的阅读器中,就好像它是新内容一样,可能会惹恼您的用户。
为了使 GUID 字段“全局”唯一,使用 URL 或 URL 的某种表示是公认的约定。因此,如果您拥有 example.com,那么您是唯一使用 example.com 的人,因此它对您和您的网站都是独一无二的。这就是 WordPress 使用永久链接或其某种形式作为 GUID 的原因。
但是,第二部分是 GUID 绝不能更改。即使您转移域,帖子仍然是相同的帖子,即使在新位置也是如此。当您更改 URL 时,被转移到新提要的提要阅读器应该仍然知道他们之前已经阅读过您的一些帖子,因此 GUID必须保持不变。
在任何情况下都不要更改 GUID 列的内容。
如果需要将默认上传文件夹更改为其他位置,则需要更改帖子表的post_content列中的任何媒体 URL。例如,如果默认上传文件夹从wp-content/uploads更改为images:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'www.domain.com/wp-content/uploads' , 'www.domain.com/images' ); |
多站点注释 #
wp-cli #
wp-cli是一个超级有用的 shell 工具。
wp search-replace 'example.dev' 'example.com' --skip-columns=guid |
或者,如果您只想更改选项,您可以执行以下操作:
wp option update home 'http://example.com' wp option update siteurl 'http://example.com' |