Image placeholder

优化配置 wp-config.php ,提升 wordpress 性能和安全性

Image placeholder
F2EX 2017-09-15

作为 WordPress 的重要组成部分,你可以通过修改 wp-config.php 配置文件,来发挥 WordPress 的最佳性能和提升安全性。

以下是 wp-config.php 配置文件的高级功能,在正式使用前,请先确保你已经执行常规备份并且了解如何恢复系统。

高级选项

数据库表格前缀

$table_prefix 是被放在你的数据库表格前面部分的设定值,数据库前缀的设置对提高你的站点安全以及在同一数据库中安装多个 WordPress 站点都非常有用,通过改变默认值 “wp_” 为随机独一无二的值,可减轻站点受攻击的可能性,总体上提高你的网站安全性。

// 你可以将多个博客安装到同一个数据库,如果你为它们设置不同的前缀。
$table_prefix  = 'r235_';   // 只支持数字,字母和下划线!

在同一个数据库上安装第二个博客的时候,可以通过指定不同的前缀来安装。

$table_prefix  = 'y77_';   // 只支持数字,字母和下划线!
WordPress 地址(URL)

WP_SITEURL (自 WordPress 版本2.2定义)允许定义 WordPress 地址(URL)。定义的值是你的 WordPress 核心文件所在的地址。它也应该包括http:// 部分。地址不要以斜线 “/” 结束。在 wp-config.php 中设置此值将覆盖 siteurl 的 wp_options 数据库表值,并禁用“管理” > “设置” > “常规” 面板中的 WordPress地址(URL)字段。

注意:它不会更改数据库值,如果此行从 wp-config 中删除,则 url 将还原为旧数据库中的值。使用 RELOCATE 常量来更改数据库中的 siteurl 值。

如果 WordPress 安装到域名为 example.com 的 “wordpress” 目录中,定义的 WP_SITEURL ,如下所示:

define('WP_SITEURL', 'http://example.com/wordpress');

基于 $_SERVER[‘HTTP_HOST’] 动态设置 WP_SITEURL :

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wordpressp');

注意:另一个更安全的替代方法是使用服务器生成的 SERVER_NAME ,而不是 php 用户生成的 HTTP_HOST ,它是由 php 动态创建的,基于请求 HTTP HOST 头的值,因此可能会允许文件包容漏洞。SERVER_NAME 由服务器配置设置,是静态的。

基于 $_SERVER[‘SERVER_NAME’] 动态设置 WP_SITEURL :

define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/path/to/wordpressp');
博客地址(URL)

WP_HOME 是在 WordPress 版本 2.2 中添加的另一个 wp-config.php 选项。与 WP_SITEURL 类似, WP_HOME 会覆盖 home 的 wp_options 数据库表值,但不会永久更改。home 是你希望人们在浏览器中输入的你的 WordPress 博客的地址。它应该包括 http:// 部分,最后不应该有斜杠 “/” 。

define('WP_HOME', 'http://example.com/wordpress');

基于 $_SERVER[‘HTTP_HOST’] 动态设置 WP_HOME :

define('WP_HOME',    'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wordpress');
迁移目录wp-content

自版本 2.6 以来,你可以移动 wp-content 目录,该目录包含你的主题,插件和上传,它可以放置在 WordPress 应用程序目录之外。

将 WP_CONTENT_DIR 设置为此目录的完整本地路径(无后缀斜杠),例如

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );

将 WP_CONTENT_URL 设置为此目录的完整 URI(无后缀斜杠),例如

define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');

还有一些可选的选项(例如只给插件目录设置路径):

将 WP_PLUGIN_DIR 设置为此目录的完整本地路径(无后缀斜杠),例如

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content/plugins' );

将 WP_PLUGIN_URL 设置为此目录的完整 URI(无后缀斜杠),例如

define( 'WP_PLUGIN_URL', 'http://example/blog/wp-content/plugins');

如果你有插件的兼容性问题,请将 PLUGIN DIR 设置为此目录的完整本地路径(无尾部斜线),例如。

define( 'PLUGINDIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content/plugins' );
修改自动保存间隔

编辑帖子时,WordPress 会使用 Ajax 在编辑时自动保存对帖子的修改。默认值为60秒,你也可以自己设置。

define('AUTOSAVE_INTERVAL', 160 );  // 单位秒

注意:如果此自定义设置无效,请将此项设置移到 wp-config.php 文件的最上面(注释下方)。

关闭文章修订

在默认情况下,WordPress 将会自动为你保存编辑中的文章和页面,允许你恢复文章和页面的各个版本。此功能可以通过修改参数禁用:

define('WP_POST_REVISIONS', false );

注意:如果此自定义设置无效,请将此项设置移到 wp-config.php 文件的最上面(注释下方)。

指定修订数量

如果要指定最大修订数,请将上面的 false 更改为整数/数字(例如3或5)。

define('WP_POST_REVISIONS', 3);
设置 Cookie 域

如果子域用于提供静态内容。为了防止将每个请求都发送到你的子域中的静态内容,你可以只将 cookie 域设置为非静态域。

define('COOKIE_DOMAIN', 'www.f2ex.cn');
Debug

在 WordPress 版本 2.3.1 中添加的 WP_DEBUG选 项用来控制显示一些错误和警告。如果 wp-config.php 中不存在此设置,则默认该值为 false 。

define('WP_DEBUG', true);
define('WP_DEBUG', false);

另外,如果你打算修改 WordPress 的一些内置 JavaScript ,则应启用以下选项:

define('SCRIPT_DEBUG', true);

这将允许你编辑 wp-includes/js 和 wp-admin/js 目录中的 scriptname.dev.js 文件。

在 2.3.2 之后的 WordPress 版本中,仅当 WP_DEBUG 设置为 true 时才打印数据库错误。

禁用 Javascript 合并

为了减少请求加快访问速度,wordpress 默认将所有的 Javascript 文件都合并接成一个 URL 。但是如果你在后台发现内容编辑框有问题,可以禁用此项。

define('CONCATENATE_SCRIPTS', false);
配置错误日志

下面是一个将 php error_logging 打开并将其记录到特定文件的示例。如果将 WP_DEBUG 定义为 true ,则错误也将保存到此文件。

@ini_set('log_errors','On');
@ini_set('display_errors','Off');
@ini_set('error_log','/home/example.com/logs/php_error.log');
/* 就这样,不要再编辑了 */
增加分配给PHP的内存

如果你收到 “Allowed memory size of xxxxxx bytes exhausted” ,此设置可能是必需的。

此设置仅增加了 WordPress 的 PHP 内存,而不是其他应用程序。默认情况下,WordPress 尝试将分配给 PHP 的内存增加到 32MB(代码位于wp-settings.php的开头),因此 wp-config.php 中的设置应该高于 32MB 。

将PHP内存增加到64MB:

define('WP_MEMORY_LIMIT', '64M');

将PHP内存增加到96MB:

define('WP_MEMORY_LIMIT', '96M');
缓存

如果 WP_CACHE 设置为 true ,当执行 wp-settings.php 时,会包含 wp-content/advanced-cache.php 脚本。

define('WP_CACHE', true);
覆盖默认文件权限
define('FS_CHMOD_DIR', (0755 & ~ umask()));
define('FS_CHMOD_FILE', (0644 & ~ umask()));
清空回收站时间设置
define('EMPTY_TRASH_DAYS', 30 );  // 30 天后自动清理

要禁用回收站,可将天数设置为 0 。请注意,当点击“永久删除”时,WordPress 不会要求确认。

define('EMPTY_TRASH_DAYS', 0 );
自动优化数据库

你可以通过仅在需要该功能时将以下定义添加到 wp-config.php 文件中来启用:

define('WP_ALLOW_REPAIR', true);

然后访问 http://www.test.com/wp-admin/maint/repair.php 这个地址打开数据库优化页面。

注意:这个地址无需登录即可访问(因为数据库出错后,用户往往无法正常登录),也就是说所有人都可访问。强烈建议在优化完毕后,删除该设置。

禁用 WordPress 自动更新

把以下代码添加到 /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */ 上面:

define( 'AUTOMATIC_UPDATER_DISABLED', true );
禁用 WordPress 核心更新
 # 禁用所有核心文件更新:
 define( 'WP_AUTO_UPDATE_CORE', false );

 # 启用所有核心文件更新,包括次要和主要:
 define( 'WP_AUTO_UPDATE_CORE', true );

 # 启用次要版本的核心文件更新(默认):
 define( 'WP_AUTO_UPDATE_CORE', 'minor' );

在保存之前检查

好了,就这么多。请务必仔细检查以上你所设置的分号、/(斜杠)、或末尾空格,不要删除单引号!

在你保存文件前,一定要检查,检查,再检查。文件中的最后一项应该是 “ ?> ” 或者为空。


2017-09-21