2017-10-14 81 views
0

我用这个结构,我的帖子的网址在我的WordPress网站。用户可以访问的网页有多余的网址

Domain.com/%post_id%/%postname%

如果删除/%postname%的部分,你会去同一个页面? 我的意思是

Domain.com/post_id/postname = domain.com/post_id

有没有什么办法,当用户访问domain.com/post_id得到重定向到Domain.com/post_id/postname?

回答

0

肯定。 我建议增加一个action hook到的早期事件,也许wp

add_action("wp", function() { 
    if((is_single() || is_page()) && preg_match("!^/\d+/?$!", $_SERVER["REQUEST_URI"])) { 
     http_response_code(301); 
     header("Location: " . get_permalink()); 
     exit; 
    } 
}); 

这将在每次请求运行,并检查该请求是否是一个)一个网页或交和B)REQUEST_URI(= URL的本地部分)以斜线,后面数字,接着是开始可选的最终斜杠,没有别的。如果满足这两个条件,它将返回一个HTTP 301响应代码(“重定向永久”),并带有指示正确URL的位置标题。

把它放进你的functions.php。

有趣的是,WordPress会自动重定向/ 123/postti到/ 123/posttitle,但它不会同为/ 123。/123 /将被重定向到/ 123。我发布的代码片段将处理/ 123和/ 123 /,而wordpress会照顾那些具有部分标题的代码。