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

如何在.htaccess中将URL斜杠改为连字符并正常获取数据?

解决URL斜杠改连字符后无法获取参数的问题

问题根源

你尝试的规则RewriteRule ^list/(.*)-(.*)/$ /list.php?name=$1&date=$2失效,是因为正则中的.*是贪婪匹配模式——它会把jhon-july-8-2023里最后一个连字符之前的所有内容(也就是jhon-july-8)都赋值给$1,只把2023留给$2,完全不符合你要的name=jhon、date=july-8-2023的参数分配逻辑。

正确的Rewrite规则

根据你的场景,提供两种可行方案:

方案1:针对name不含连字符的场景(适配你的示例)

用[^-]+匹配不含连字符的字符串作为name,剩下的部分全匹配为date:

RewriteRule ^list/([^-]+)-(.*)/$ /list.php?name=$1&date=$2

这个规则会精准把jhon匹配给$1,july-8-2023匹配给$2,完全符合你的需求。

方案2:兼容name含连字符的场景(可选)

如果未来你的name字段可能包含连字符(比如jhon-doe),可以通过匹配日期格式来精准分割参数:

RewriteRule ^list/(.*)-([a-z]+-[0-9]+-[0-9]{4})/$ /list.php?name=$1&date=$2

该规则会把最后一段符合英文月份-数字日期-4位年份格式的内容作为date,前面的所有内容作为name。

必做前置检查

确保你的.htaccess顶部已经开启Rewrite引擎:

RewriteEngine On

测试时可以在list.php中添加var_dump($_GET);,直接查看参数是否正确传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:37:17