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

PHP项目通过htaccess配置友好URL的重写规则是否可行

你编写的这套重写规则无法满足你的需求,核心问题有2个:

  1. 规则匹配逻辑和你预期的URL结构不匹配:你期望的是/student?id=21、/book?id=88这类将id放在查询参数里的格式,但你写的规则匹配的是/student/数字、/book/数字这类路径分段传参的格式,完全对不上你的目标结构。
  2. 缺少必要的重写标志:你没有加L和QSA标志,就算路径匹配成功,原URL携带的查询参数也不会自动传递到重写后的地址,还可能出现后续规则覆盖当前匹配结果的问题。

正确可生效的配置如下

首先确保你的Apache已经开启mod_rewrite扩展,.htaccess文件开头先加一行开启重写引擎:

RewriteEngine On

然后替换你的规则为以下内容即可匹配你要的URL结构:

# 匹配 /teacher
RewriteRule ^teacher$ index.php?view=1 [L,QSA]
# 匹配 /student 自动透传?id=xx参数
RewriteRule ^student$ index.php?view=2 [L,QSA]
# 匹配 /book 自动透传?id=xx参数
RewriteRule ^book$ index.php?view=3 [L,QSA]

标志说明:

  • L:表示当前规则匹配成功后就停止执行后续的重写规则,避免逻辑冲突
  • QSA:自动将原URL携带的查询参数(比如?id=21)附加到重写后的目标地址后,不需要手动捕获参数,刚好匹配你的需求。

如果你需要同时兼容路径传参(也就是/student/21和/student?id=21都可以访问),可以用下面的兼容版规则:

RewriteEngine On
RewriteRule ^teacher$ index.php?view=1 [L,QSA]
RewriteRule ^student(?:/(\d+))?$ index.php?view=2&id=$1 [L,QSA]
RewriteRule ^book(?:/(\d+))?$ index.php?view=3&id=$1 [L,QSA]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:03