我们有一个定制的CMS,URL如下/adele
, /slayer
, /beastie-boys
但现在他们有了结构/artist/adele
, /artist/slayer
, /artist/beastie-boys
(自定义帖子类型)
显然,当人们访问原始链接时,他们会得到404。在抛出404错误之前,是否有方法/最好的方法首先检查帖子是否以新格式存在?数据库中大约有8万名艺术家。
我们在IIS上,所以可以利用rewritemap
但它可能太大了
我们有一个定制的CMS,URL如下/adele
, /slayer
, /beastie-boys
但现在他们有了结构/artist/adele
, /artist/slayer
, /artist/beastie-boys
(自定义帖子类型)
显然,当人们访问原始链接时,他们会得到404。在抛出404错误之前,是否有方法/最好的方法首先检查帖子是否以新格式存在?数据库中大约有8万名艺术家。
我们在IIS上,所以可以利用rewritemap
但它可能太大了
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服务器上安装了WordPress。我目前使用的permalinks设置为/news/%category%/%postname%/,因此我所有类别登录页的URL都是以/news/{category name}的形式。我现在已经建立了一个类别,我不希望遵循这种一般模式。我不想使用url/news/newcat,而想使用just/newcat。到目前为止,我已经能够在配置文件中设置如下规则: <rule name=\"67\" patternSyntax=\"ExactMatch\" st