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

如何通过.htaccess实现product/1替代product.php?id=1的URL重写

搞定URL重写:把/product/1指向/product.php?id=1的方法

别担心,我会用最直白的步骤教你,完全不用怕自己对.htaccess一窍不通!

第一步:确认前提

首先你得确保你的网站用的是Apache服务器(因为.htaccess是Apache特有的配置文件),而且主机服务商已经开启了mod_rewrite模块——现在绝大多数主流主机都默认开启这个了,要是不确定可以问问你的主机客服。

第二步:创建/编辑.htaccess文件

  1. 在你的网站根目录(就是放product.php的那个文件夹)里,创建一个名为.htaccess的文件(注意文件名开头有个点,Windows系统创建的时候可能会提示“必须输入文件名”,你可以先新建文本文件,然后重命名为.htaccess,删除.txt后缀)。
  2. 把下面这段代码复制粘贴进去:
# 开启URL重写引擎
RewriteEngine On

# 确保只对不存在的文件/目录进行重写(避免影响真实存在的文件)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 核心重写规则:把/product/数字 转发到/product.php?id=数字
RewriteRule ^product/(\d+)$ product.php?id=$1 [L]

第三步:逐行解释(帮你理解为啥这么写)

  • RewriteEngine On:打开URL重写的开关,没有这一行后面的规则都没用。
  • 那两行RewriteCond:意思是如果请求的不是真实存在的文件(!-f),也不是真实存在的目录(!-d),才执行后面的重写规则。比如如果你的网站真有个叫product的文件夹,这条规则就不会去动它,避免冲突。
  • RewriteRule ^product/(\d+)$ product.php?id=$1 [L]:
    • ^product/(\d+)$:这是匹配规则,^表示URL开头,$表示URL结尾,(\d+)表示匹配一个或多个数字(正好对应你的id参数)。
    • product.php?id=$1:这是替换后的目标地址,$1就是刚才捕获到的那个数字,比如你访问/product/123,就会自动转发到/product.php?id=123。
    • [L]:表示这是最后一条规则,只要匹配上就停止后续的重写处理,避免不必要的冲突。

额外小提示

如果你的id参数不仅有数字,还可能包含字母、下划线或者横杠,可以把规则里的(\d+)改成([a-zA-Z0-9_-]+),这样就能匹配更多字符了。

最后保存好文件,然后访问/product/1试试,应该就能看到和/product.php?id=1完全一样的内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:52:28