WordPress自定义固定链接,页面现在为404

时间:2012-03-30 作者:redconservatory

我已将永久链接设置为自定义结构:

/%menutype%/%postname%/
这适用于我的自定义分类法(menutype)和任何存档。

然而,现在简单的页面不起作用,即。

index.php?page_id=32 -> 404!

/about/ ->404
以下是我的自定义重写规则,“menu”是我的自定义帖子,“menutype”是我的自定义分类法:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        \'menu/[a-z]+/(.+)\' => \'index.php?menu=\' . $wp_rewrite->preg_index(1),
        \'menu/([^/]+)(/[0-9]+)?/?$\' => \'index.php?menutype=\' . $wp_rewrite->preg_index(1),
        \'/(.+)/\' => \'index.php?page_id=\' . $wp_rewrite->preg_index(1),
    );

    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' ); 

1 个回复
SO网友:Tom J Nowell

您需要使用自定义重写规则为menutype设置永久链接。您所做的是将menutype前缀应用于所有内容,即使menutype与所有内容都不相关,因此有些内容被误解了。

您将需要类似的内容:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        \'([^/]+)(/[0-9]+)?/?$\'    =>  \'index.php?menu_type=\'. $wp_rewrite->preg_index(1).\'&post_name=\'. $wp_rewrite->preg_index(2)
    );

    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' );
但是,我建议您事先添加前缀,如“menus”等,以防止与现有重写规则发生进一步冲突。

使用monkeyman rewrite Analyzer工具插件测试您制定/更改/编辑的任何重写规则,方法是输入URL并查看哪些规则被激活以及以何种顺序激活。

结束

相关推荐

All in One Seo and Permalinks

我正在使用多功能搜索引擎优化,对于帖子标题格式选项,我将其作为:%post\\u标题%kewyord1关键字2等关键字1,关键字2是我为我的网站选择的关键字此外,在Permalinks中,我将其命名为/%postname%/,以便帖子名称显示在短链接/url中因此,使用这些配置,如果我在标题中使用“Books”进行发布,它将如下所示:Books关键字1关键字2等但该帖子的短链接或实际url如下所示:www.mydomain。com/书籍它不包含我在搜索引擎优化中指定的所有关键字我试着将Permalink更