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

如何用.htaccess的mod-rewrite将test.php?url=username重写为test/username/?

解决URL重写问题

首先纠正你现有代码中的几个错误,然后给出完整的实现方案:

错误分析

  • 你的RewriteCond匹配的是name=(.+),但实际参数是url=username,匹配规则不对应。
  • 在.htaccess文件中,RewriteRule的匹配模式不需要开头的/,因为是相对当前目录的路径。
  • 缺少必要的规则标志,导致规则执行逻辑不符合预期。

完整的.htaccess代码

# 启用重写引擎
RewriteEngine On

# 1. 将旧URL test.php?url=username 重定向到新URL test/username/(地址栏会显示新路径)
RewriteCond %{QUERY_STRING} ^url=([^&]+)$
RewriteRule ^test\.php$ /test/%1/ [R=301,L]

# 2. 将新URL test/username/ 内部映射到 test.php?url=username(服务器后台处理,地址栏不变)
RewriteRule ^test/([^/]+)/$ test.php?url=$1 [L]

代码说明

  • RewriteEngine On:必须开启重写引擎,否则所有规则无效。
  • 第一条规则:匹配带url=username查询参数的test.php请求,通过301永久重定向跳转到友好URL,L标志表示执行完这条规则后停止后续匹配。
  • 第二条规则:匹配test/username/格式的请求,后台将其映射到原脚本test.php?url=username,确保业务逻辑正常执行。

注意事项

  • 确认服务器已启用mod_rewrite模块。
  • 如果.htaccess放在子目录,需添加RewriteBase /子目录路径/指令调整基准路径。
  • 测试阶段可将R=301改为R=302临时重定向,确认无误后再换回永久重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:25:05