WordPress伪静态配置,Nginx与Apache两种环
WordPress伪静态配置的核心目的,是让文章链接从带问号的动态地址变成简洁的静态形式,同时保证页面能正常访问。
Nginx和Apache的处理机制不同:Apache依赖.htaccess文件,Nginx需要手动在站点配置里写rewrite规则。
下面按两种环境分别给出可照做的步骤,并说明改完后怎么验证。
动手前先确认三件事
- 固定链接结构:登录WordPress后台,进入
设置→固定链接,建议先选“文章名”或“自定义结构”,例如/%postname%/,记下这个结构,后面配置要对应。 - 服务器类型:不确定当前用的是Nginx还是Apache,可以在服务器执行
nginx -v或httpd -v查看,也可以看宝塔面板软件商店里已安装的是哪个。 - 配置文件位置:宝塔面板的站点配置文件一般在
/www/server/panel/vhost/nginx/域名.conf或/www/server/panel/vhost/apache/域名.conf;手动编译安装的Nginx通常在/etc/nginx/conf.d/或/usr/local/nginx/conf/nginx.conf。
修改任何配置文件前,先执行一次备份,例如:
cp /www/server/panel/vhost/nginx/example.com.conf /www/server/panel/vhost/nginx/example.com.conf.bak
Nginx环境:添加try_files重写规则
Nginx不会自动读取.htaccess,必须在站点的server {}块里加规则。
找到站点配置文件,在location /段内加入下面这行:
location / {
try_files $uri $uri/ /index.php?$args;
}
如果配置里已有location ~ \.php$段落,保持不动,只补上面这段即可。
改完保存,先测试语法再重载:
nginx -t
nginx -s reload
看到test is successful和重载无报错,
说明配置生效。try_files的作用是依次查找真实文件、
目录,
都不存在时交给index.php处理,
这样文章页、
分类页才能正确解析。
Apache环境:检查.htaccess与AllowOverride
Apache一般不需要手动写重写规则,WordPress会自动在网站根目录生成.htaccess文件。
如果固定链接保存后文章页仍然404,按顺序排查两点:
- 确认网站根目录存在
.htaccess,内容应包含RewriteEngine On和RewriteBase /,以及指向index.php的RewriteRule。 - 确认Apache配置里对应目录的
AllowOverride值为All。如果为None,.htaccess会被忽略。可在虚拟主机配置中检查:
AllowOverride All
Require all granted
改完执行httpd -t检查语法,再systemctl reload httpd或通过宝塔面板重启Apache。
改完必须做的访问验证
配置生效后,打开一篇已发布文章,确认URL是固定链接形式且页面正常显示。
再测试分类页、标签页和搜索页,这几类页面最容易暴露重写规则不完整的问题。
如果文章页正常但后台固定链接保存时报404,通常是index.php重写规则缺失或权限问题,可临时把固定链接切回“朴素”再切回自定义结构重新生成。
判断配置是否真正生效,可以看两点:文章详情页返回200状态码,且不带?这类动态参数。 用浏览器开发者工具的网络面板,或执行
p=curl -I https://你的域名/文章别名/查看响应头即可确认。
容易踩坑的四个地方
- Nginx改了配置没重载:只保存文件不执行
nginx -s reload,规则不会生效,这是最常见的新手问题。 - Apache的.htaccess权限:文件属主建议与网站运行用户一致,权限设为644,权限过大反而可能被Apache拒绝读取。
- CDN或反向代理缓存:如果站点前面挂了CDN,改完伪静态后旧链接可能仍返回404,需要刷新CDN缓存再测试。
- HTTPS跳转与伪静态冲突:部分环境同时存在强制HTTPS规则,重写顺序不对会导致循环跳转,建议先确认HTTP和HTTPS都能正常访问再叠加伪静态规则。
常见疑问
问:Nginx下固定链接保存后,只有首页能打开,其他页面全404,是什么原因?
答:基本可以确定是缺少try_files规则,按上文Nginx部分补上并重载即可。
如果已经加了规则仍404,检查规则是否写在了正确的server块内。
问:Apache下.htaccess文件存在,但重写不生效怎么办?
答:优先检查AllowOverride是否设为All,其次确认Apache已加载mod_rewrite模块。
宝塔面板可在软件商店的Apache设置里查看模块状态。
问:伪静态配置会影响WordPress后台吗?
答:正常情况下不影响,后台地址/wp-admin/是真实目录,try_files会优先匹配到它。
如果后台也打不开,说明规则写得过于宽泛,需要把location /规则限定在合适范围。
问:换服务器后伪静态需要重新配置吗?
答:需要。
Nginx的配置不会随网站文件迁移,Apache的.htaccess通常随文件一起复制,但仍要确认新环境的AllowOverride和重写模块已开启。
伪静态配置本身不复杂,关键是分清当前服务器类型,选对对应的配置方式,改完后用文章页和分类页各访问一次做验证。
遇到404先回看规则是否生效、配置是否重载,多数问题都能快速定位。