在宝塔面板中给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。