前言
为了让 WordPress 的固定链接(Permalinks)功能正常工作,需要在 Web 服务器中配置相应的 URL 重写规则。本文档将详细介绍在 Nginx、LiteSpeed 和 Lighttpd 三种主流服务器环境下,如何正确配置 WordPress 的重写规则。
1. Nginx 服务器配置
Nginx 的配置通常位于 nginx.conf 或其包含的站点配置文件中。WordPress 的重写规则需要放置在对应的 server 块内。
推荐配置
将以下规则添加到您的 WordPress 站点配置的 location / { ... } 块中:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
说明: 这是 Nginx 下处理 WordPress 重写的标准且高效的方法。try_files 指令会按顺序检查文件是否存在,若所有检查都失败,则将请求转发给 /index.php,并保留查询参数。
备选配置(旧式方法)
您可能还会见到使用 if 指令和 rewrite 的旧配置,但不如 try_files 高效,不推荐作为首选:
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
注意: 在 Nginx 中过度使用 if 指令可能存在性能问题,且第一个示例中的 rewrite . /index.php last; 规则过于宽泛,可能引发意外重写,因此不推荐。
2. LiteSpeed 服务器配置
LiteSpeed Web Server 高度兼容 Apache 的 .htaccess 文件。您可以直接将 Apache 的 Rewrite 规则用于 LiteSpeed。
标准 .htaccess 规则
在 WordPress 安装根目录下的 .htaccess 文件中,应包含以下规则:
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
说明:
RewriteEngine On:开启重写引擎。RewriteBase /:设置重写的基础路径为根目录。RewriteRule ^index.php$ - [L]:如果请求已经是index.php,则停止后续所有重写规则([L]标志)。RewriteCond:两个条件判断请求的文件(-f)或目录(-d)是否真实存在。如果不存在,则执行下面的RewriteRule。RewriteRule . /index.php [L]:将所有非真实存在的文件/目录请求重写到/index.php。
通常,在 WordPress 后台“设置”->“固定链接”中点击保存后,会自动生成此文件。
3. Lighttpd 服务器配置
Lighttpd 的配置通常位于 lighttpd.conf 或通过 include 引入的配置片段中。规则需要添加到 url.rewrite-if-not-file 或 url.rewrite-once 部分。
标准配置规则
将以下规则添加到您的 Lighttpd 配置文件中:
url.rewrite-if-not-file = (
"^/(wp-(content|admin|includes).*)" => "$0",
"^/(.*.(php|css|js|png|jpg|jpeg|gif|ico|xml))$" => "$0",
"^/(sitemap.xml)$" => "$0",
"^/(xmlrpc.php)$" => "$0",
"^/(.*)$" => "/index.php/$1"
)
规则详解:
- 第一行:保留对 WordPress 核心目录(wp-content, wp-admin, wp-includes)下所有文件的直接访问。
- 第二行:保留对所有静态资源文件(如图片、样式表、脚本)的直接访问。
- 第三、四行:保留对
sitemap.xml和xmlrpc.php的直接访问。 - 最后一行:将其余所有请求重写到
/index.php,并将原始路径作为参数传递。
修正说明: 原文中的规则 "^/(wp-. ).*/?" 存在语法错误且不完整,已修正为更精确和安全的匹配模式,避免错误地重写核心文件。
通用注意事项
- 修改前备份: 在修改任何服务器配置文件之前,请务必备份原文件。
- 重启服务: 修改 Nginx 或 Lighttpd 的主配置文件后,需要重启或重载服务才能使配置生效。修改
.htaccess文件则无需重启 LiteSpeed/Apache。 - 权限问题: 确保
.htaccess文件可被 Web 服务器进程读取。 - WordPress 设置: 确保在 WordPress 后台“设置”->“固定链接”中选择了除“朴素”以外的任何结构,这是启用重写功能的前提。
正确配置 URL 重写是 WordPress 站点正常运作的基础,请根据您的服务器环境选择对应的配置方法。