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

PHP配置.htaccess重写URL后无法正确获取GET参数如何解决

问题原因

1. 重写规则正则匹配逻辑错误

你当前使用的.*是贪婪匹配规则,会匹配包含斜杠/在内的任意字符,分组时会优先吞掉尽可能多的路径内容,最终导致参数拆分错位:
比如实际访问路径为/news/1114/Presentation: Heath+Day+in+2018/时,第一个(.*)会匹配到news/1114赋值给newstype,第二个(.*)匹配到标题内容赋值给newsid,第三个分组无有效内容,和你输出的$_GET结果完全吻合。

2. 前端URL生成逻辑错误

生成SEO链接时调用urldecode是完全错误的操作,会导致路径段中的特殊字符(空格、中文、符号等)直接暴露,甚至可能携带额外斜杠破坏路径结构。


修复方案

第一步:修改.htaccess重写规则

将所有贪婪匹配.*替换为[^/]*,限定每个分组仅匹配单个路径段(不包含斜杠):

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ news.php?newstype=$1&newsid=$2&newstitle=$3 [L,QSA,NC,B]

第二步:修正前端URL生成逻辑

  • 去掉错误的urldecode调用
  • 对每个路径段单独做URL编码,避免特殊字符破坏路径结构
  • 给链接加前缀/强制使用根路径,避免相对路径拼接错误
// 对每个路径段单独处理,newsid转整数进一步保证格式合法
$seoUrl = urlencode($urlNewsType).'/'.intval($newsid).'/'.urlencode($urlNewsTitle).'/';
$seoUrl = html_escape($seoUrl, 'UTF-8');

<a href="/<?php echo $seoUrl; ?>">Read More</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:05