URL更改-检查404之前的帖子是否存在

时间:2015-11-08 作者:pee2pee

我们有一个定制的CMS,URL如下/adele, /slayer, /beastie-boys 但现在他们有了结构/artist/adele, /artist/slayer, /artist/beastie-boys (自定义帖子类型)

显然,当人们访问原始链接时,他们会得到404。在抛出404错误之前,是否有方法/最好的方法首先检查帖子是否以新格式存在?数据库中大约有8万名艺术家。

我们在IIS上,所以可以利用rewritemap 但它可能太大了

1 个回复
SO网友:pee2pee

function checkArtist() {
    $page = get_page_by_path($_SERVER[\'REQUEST_URI\'].\'/\',OBJECT,\'artist\');

    if($page){
        header("HTTP/1.1 301 Moved Permanently"); 
        header("Location: /artist".$_SERVER[\'REQUEST_URI\']);
    }
}
add_action( \'wp\', \'checkArtist\' );
我使用添加自定义挂钩wp 正如文章所说:

这个钩子是在查询之后、WordPress进行任何路由、处理或处理之前执行任何高级过滤或验证的有效位置。

然后该函数使用get_page_by_path 检索给定路径的页面。路径是使用PHP从URL获取的$_SERVER[\'REQUEST_URI\']. 如果它存在于特定的帖子类型中,那么我会执行301重定向。

相关推荐

如何为单个类别创建IIS7重写规则

我在IIS7服务器上安装了WordPress。我目前使用的permalinks设置为/news/%category%/%postname%/,因此我所有类别登录页的URL都是以/news/{category name}的形式。我现在已经建立了一个类别,我不希望遵循这种一般模式。我不想使用url/news/newcat,而想使用just/newcat。到目前为止,我已经能够在配置文件中设置如下规则: <rule name=\"67\" patternSyntax=\"ExactMatch\" st