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

迁移程序至WordPress时使用$_GET参数出现404错误求助

WordPress下GET参数404问题分析与解决

标准GET参数返回404的原因

  1. 重写规则未保留查询字符串
    当你使用WordPress自定义固定链接(如/%postname%/)时,Apache/Nginx的重写规则需要QSA(Query String Append)标志来保留?后的参数。如果.htaccess(Apache)或Nginx配置中缺少该标志,带参数的请求会丢失查询信息,WordPress无法匹配到program页面,返回404。
  2. 安全模块拦截多参数请求
    你的请求最多包含28个参数,部分服务器的安全模块(如mod_security)会将这类请求判定为恶意操作,直接返回404。

加$后能访问但参数失效的原因

在parameter1前加$后,参数名变为$parameter1(URL示例:home/program/?$parameter1=1&parameter2=2):

  • 服务器的重写规则或安全模块未拦截这种格式的参数,请求正常传递到program页面,因此不会返回404。
  • 你的代码中是通过$_GET['parameter1']读取参数,但实际参数键名是$parameter1,自然取不到值;后续参数键名未修改,所以能正常工作。

解决方法

1. 修复重写规则的QSA标志

  • Apache环境:编辑WordPress根目录的.htaccess,确保重写规则包含QSA:
    RewriteEngine On
    RewriteBase /home/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /home/index.php [L,QSA]
    
  • Nginx环境:在server配置中确保传递查询参数:
    location /home/ {
        try_files $uri $uri/ /home/index.php?$args;
    }
    

2. 调整服务器安全规则

联系主机服务商,检查mod_security或其他安全插件是否拦截了你的多参数请求,要求放行/home/program/路径的请求。

3. 使用WordPress官方参数处理(推荐)

迁移到WordPress后,建议用官方方式处理参数,避免兼容问题:

  1. 注册自定义查询变量:
    function add_custom_query_vars($vars) {
        $vars[] = 'parameter1';
        $vars[] = 'parameter2';
        // 依次注册所有需要的参数
        return $vars;
    }
    add_filter('query_vars', 'add_custom_query_vars');
    
  2. 在页面模板中获取参数:
    $param1 = get_query_var('parameter1');
    $param2 = get_query_var('parameter2');
    

内容的提问来源于stack exchange,提问作者Diamaudix Audio Ltd.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:23