本文介绍如何通过 WordPress 的 parse_request 钩子拦截并校验手动输入的 URL 参数,在检测到非法 GET 参数(如 random=text)时执行安全重定向,避免直接暴露或误用查询参数。
本文介绍如何通过 wordpress 的 `parse_request` 钩子拦截并校验手动输入的 url 参数,在检测到非法 get 参数(如 `random=text`)时执行安全重定向,避免直接暴露或误用查询参数。
在 WordPress 开发中,用户可能通过浏览器地址栏直接访问带查询参数的 URL(例如 https://mysite.com/?random=text)。这类请求绕过了常规页面流程,若未加校验,可能导致信息泄露、参数滥用或 SEO 问题。为实现精细化控制,推荐使用 parse_request 动作钩子——它在 WordPress 解析请求路径与查询变量后、但尚未加载主查询或模板前触发,是拦截和干预 GET 请求的理想时机。
以下是一个可直接集成到主题 functions.php 或插件中的完整示例:
add_action('parse_request', 'my_custom_url_handler');function my_custom_url_handler($wp) { // 注意:$wp 是 WP 对象实例,可用于获取更精确的请求上下文(如 $wp->request) // 检查是否携带非法参数 'random' 且值为 'text' if (isset($_GET['random']) && $_GET['random'] === 'text') { // 可选:进一步限定仅匹配根路径(/),避免影响子页面 if ($_SERVER['REQUEST_URI'] === '/' || $_SERVER['REQUEST_URI'] === '/index.php') { // 重定向至自定义页面(如404页、提示页或首页) $redirect_url = home_url('/blocked/'); // 推荐使用 site 内部路径,而非外部链接 // 使用 302 临时重定向更符合语义(404 不应伴随重定向,易引发 SEO 问题) wp_redirect($redirect_url, 302); exit; } }}
✅ 关键说明与最佳实践:
通过该方案,你不仅能精准拦截非法 GET 请求,还可灵活扩展为参数白名单、来源 IP 限制、登录态校验等高级策略,为 WordPress 站点构建第一道 URL 层面的安全防线。