我们有一个定制的CMS,URL如下/adele, /slayer, /beastie-boys 但现在他们有了结构/artist/adele, /artist/slayer, /artist/beastie-boys (自定义帖子类型)
显然,当人们访问原始链接时,他们会得到404。在抛出404错误之前,是否有方法/最好的方法首先检查帖子是否以新格式存在?数据库中大约有8万名艺术家。
我们在IIS上,所以可以利用rewritemap 但它可能太大了
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重定向。