You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中/?post_types=boardgames路径应匹配哪个模板文件?

问题解决方案

首先明确两个核心原因:

  1. Apache默认Redirect指令仅匹配路径部分,不识别?后的查询字符串,因此你写的301规则不生效
  2. WordPress会将携带post_types查询参数的请求判定为搜索请求,不会主动加载自定义文章类型的归档模板

你可以任选以下一种方案解决:


方案1:修复301跳转规则,将带参数请求统一跳转至漂亮固定链接

在.htaccess文件的WordPress默认规则之前添加以下mod_rewrite规则:

<IfModule mod_rewrite.c>
RewriteEngine On
# 匹配查询字符串为post_types=boardgames的根路径请求
RewriteCond %{QUERY_STRING} ^post_types=boardgames$
RewriteRule ^$ /boardgames/? [L,R=301]
</IfModule>

规则末尾的?作用是跳转时丢弃原查询参数,避免出现无限跳转问题。


方案2:不跳转,直接让带参数请求加载正确模板

在主题的functions.php文件中添加如下钩子代码:

add_filter( 'template_include', 'custom_boardgames_template_redirect' );
function custom_boardgames_template_redirect( $template ) {
    // 匹配post_types=boardgames的搜索请求
    if ( get_query_var( 'post_types' ) === 'boardgames' && is_search() ) {
        $custom_template = locate_template( 'archive-boardgames.php' );
        if ( !empty( $custom_template ) ) {
            return $custom_template;
        }
    }
    return $template;
}

方案3:从根源修改Search & Filter插件的输出

直接进入插件对应筛选器的设置界面,找到「全部」选项的自定义URL配置项,手动填写/boardgames/作为全部选项的跳转地址,替换插件默认生成的带参数链接。

注意:修改完规则或代码后如果开启了服务器缓存、CDN或者WordPress缓存插件,需要先清空缓存再测试;301重定向是永久缓存,测试前需要清空浏览器缓存。

内容的提问来源于stack exchange,提问作者Ger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:18:03