在宝塔面板中给WordPress配置伪静态后,访问wodepress.com/product/product-1/product-post.html这类URL出现404错误,核心原因是伪静态规则没有正确匹配这类多层级的自定义URL结构,导致Nginx/Apache无法将请求转发给WordPress的index.php处理。
一、先明确核心问题
WordPress本身不直接处理.html后缀和多层级的URL,需要通过伪静态规则让Web服务器(Nginx/Apache)把所有这类请求都交给index.php解析,而你的404是因为伪静态规则覆盖不到这类URL格式。
二、分服务器类型解决(宝塔主流是Nginx)
场景1:宝塔使用Nginx服务器
进入宝塔伪静态配置页面
登录宝塔面板→找到对应网站→点击「设置」→「伪静态」→清空原有规则(保留备份),粘贴以下适配多层级+html后缀的规则:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# 专门匹配product开头的html后缀URL
location ~ ^/product/.*\.html$ {
try_files $uri $uri/ /index.php$is_args$args;
rewrite ^/product/(.*)\.html$ /index.php?post_type=product&name=$1 last;
}
# 通用WordPress伪静态规则(兼容其他页面)
if (!-e $request_filename) {
rewrite ^/index\.php$ - [L];
rewrite ^(.*)$ /index.php/$1 last;
}
# 禁止直接访问隐藏文件
location ~ /\. {
deny all;
}
关键规则解释
location~^/product/.*\.html$:精准匹配以/product/开头、.html结尾的所有URL;
rewrite规则将/product/product-1/product-post.html转发给index.php,并传递post_type和name参数,让WordPress识别对应的产品页面;
try_files优先检查文件是否存在,不存在则交给index.php处理,避免静态文件被误转发。
保存并重启Nginx
配置完成后点击「保存」,然后在宝塔面板「软件商店」→找到Nginx→点击「重启」,确保规则生效。
场景2:宝塔使用Apache服务器
如果你的环境是Apache,伪静态规则替换为:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 匹配product开头的html URL
RewriteRule ^product/(.*)\.html$ index.php?post_type=product&name=$1 [L,QSA]
# 通用WordPress规则
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
保存后重启Apache即可。
三、额外排查步骤(如果仍404)
检查WordPress固定链接设置
登录WordPress后台→设置→固定链接→确认是否选择了「自定义结构」,且结构包含/product/%postname%/(或对应你的自定义文章类型规则),修改后点击「保存更改」(会刷新WordPress的rewrite规则)。
确认自定义文章类型配置
如果product是自定义文章类型(CPT),检查注册代码中是否开启了rewrite支持:
register_post_type( 'product', array(
'rewrite' => array(
'slug' => 'product',
'with_front' => false, // 关键:避免URL前缀干扰
'pages' => true // 支持分页/多层级
),
// 其他配置...
) );
检查宝塔的URL重写开关
宝塔面板→网站→设置→「SEO优化」→确认「URL重写」已开启;同时检查网站根目录的.htaccess(Apache)或nginx.conf(Nginx)是否有宝塔自动生成的冲突规则,如有则删除。
核心解决方案是适配多层级+html后缀的伪静态规则,让Web服务器将这类URL转发给WordPress的index.php;
必须同步检查WordPress「固定链接」和自定义文章类型的rewrite配置,确保内部规则匹配;
配置后重启Web服务器(Nginx/Apache),并刷新WordPress固定链接设置,才能让规则完全生效。
如果仍有404,可在宝塔面板「日志」→「Nginx/Apache日志」中查看具体的404请求路径,确认规则是否匹配到对应的URL。