用户可以访问的网页有多余的网址
问题描述:
我用这个结构,我的帖子的网址在我的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?
答
肯定。 我建议增加一个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会照顾那些具有部分标题的代码。