You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP自动预加载处理GET参数失效,如何用.htaccess替换特殊参数值

问题解决:GET参数清理失败与.htaccess重写实现

原PHP代码的问题修复

你的PHP预加载文件无法处理GET参数,核心是代码存在语法和逻辑错误:

  • 函数定义缺少function关键字,导致sanit函数未被解析
  • 数组递归处理时调用了不存在的sanitizare函数,应为sanit
  • 数组处理未初始化$inputstring变量,直接修改原数组项更合理
  • 循环结构缺少大括号,虽语法允许但易引发逻辑混乱

修复后的完整代码:

<?php
echo 'test';
if(isset($_GET) && !empty($_GET)) {
    foreach ($_GET as $key => $value) {
        if(!empty($value)) {
            $_GET[$key] = sanit($value);
        }
    }
}

function sanit($item) {
    if(is_array($item))  {
        foreach($item as $key => $val)  {
            $item[$key] = sanit($val);
        }
    } else {
        $item = filter_var($item, FILTER_SANITIZE_STRING);
        $item = filter_var($item, FILTER_SANITIZE_MAGIC_QUOTES);
        $item = preg_replace('/(0x)(\d{2,})/i', 'OOO', $item);
        $item = preg_replace('/(0o)(\d{2,})/i', 'OOO', $item);
        $item = preg_replace('/(0b)(\d{2,})/i', 'OOO', $item);
    }
    return $item;
}

用.htaccess实现GET参数替换

如果坚持使用.htaccess重写,需确保服务器已启用mod_rewrite模块,以下分两种场景实现:

场景1:仅替换指定参数(如ref)

RewriteEngine On

# 替换ref参数中0x开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*)ref=0x\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1ref=OOO%2 [L,R=302]

# 替换ref参数中0o开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*)ref=0o\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1ref=OOO%2 [L,R=302]

# 替换ref参数中0b开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*)ref=0b\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1ref=OOO%2 [L,R=302]

场景2:替换所有GET参数中的匹配值

RewriteEngine On

# 替换所有参数值中0x开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*?)([&?])([^&=]+)=0x\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1%2%3=OOO%4 [L,R=302]

# 替换所有参数值中0o开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*?)([&?])([^&=]+)=0o\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1%2%3=OOO%4 [L,R=302]

# 替换所有参数值中0b开头的两位以上数字
RewriteCond %{QUERY_STRING} ^(.*?)([&?])([^&=]+)=0b\d{2,}(.*)$
RewriteRule ^(.*)$ /$1?%1%2%3=OOO%4 [L,R=302]

说明:

  • R=302为临时重定向,需永久重定向可改为R=301
  • 规则会循环执行,直到所有匹配模式都被替换

内容的提问来源于stack exchange,提问作者Hexman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:05:26