我们有一个定制的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重定向。