如何禁用WordPress的URL自动匹配重定向,仅允许精确URL访问?
解决WordPress自定义文章类型模糊匹配重定向问题
我来帮你搞定这个问题!WordPress的自动模糊匹配重定向是它的**规范URL重定向(Canonical Redirect)**功能在起作用,它会试图把相似的URL导向最匹配的内容。要针对你的「books」自定义文章类型禁用这个模糊匹配,你可以用下面两种方法实现,都是安全且有效的:
方法一:修改主题functions.php文件(快速实现)
把这段代码添加到你当前主题的functions.php文件末尾(记得先备份文件,避免出错):
add_filter('redirect_canonical', 'disable_book_fuzzy_redirect', 10, 2); function disable_book_fuzzy_redirect($redirect_url, $requested_url) { // 全局调用WP查询对象,判断当前请求是否针对books类型 global $wp_query; if (isset($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'books') { // 如果请求URL和重定向目标不一致,说明是模糊匹配,直接阻止重定向 if ($redirect_url !== $requested_url) { return false; } } // 其他内容类型保持默认的规范重定向行为 return $redirect_url; }
这段代码的逻辑很清晰:只针对「books」类型的请求生效,一旦检测到WordPress要进行模糊匹配跳转,就直接取消这个操作;网站其他页面的正常重定向不受影响。
方法二:创建自定义插件(更稳定,主题更新不失效)
如果担心主题更新会覆盖functions.php的修改,推荐用这个方法,创建一个专属小插件:
- 在
wp-content/plugins/目录下新建一个文件夹,比如disable-book-fuzzy-redirect - 在文件夹里新建PHP文件
disable-book-fuzzy-redirect.php - 把下面的代码粘贴进去:
<?php /** * Plugin Name: Disable Book Fuzzy Redirect * Description: 禁用自定义文章类型books的模糊匹配重定向,仅允许精确URL访问 * Version: 1.0 * Author: Your Name */ add_filter('redirect_canonical', 'disable_book_fuzzy_redirect', 10, 2); function disable_book_fuzzy_redirect($redirect_url, $requested_url) { global $wp_query; if (isset($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'books') { if ($redirect_url !== $requested_url) { return false; } } return $redirect_url; }
- 登录WordPress后台,在「插件」页面启用这个插件就大功告成了。
验证效果
设置完成后,访问mysite.com/carol这类没有精确匹配的URL,应该会显示404页面,而不是跳转到《圣诞颂歌》的文章页面。只有当你访问完全匹配的文章URL(比如mysite.com/圣诞颂歌,具体取决于你的固定链接设置)时,才会正常打开对应的内容。
内容的提问来源于stack exchange,提问作者Ameer Bacchus
相关产品推荐
相关产品推荐

