如何通过.htaccess在PHP中移除URL的?id=并替换为斜杠
解决URL中?id=转斜杠的404问题
你当前的.htaccess只实现了移除.php后缀的功能,但没有处理将/xxx格式的URL转换为?id=xxx参数的规则,导致服务器找不到对应资源,所以出现404错误。
你需要在现有规则前添加一条重写规则,把带尾部ID的URL映射回带参数的PHP文件,修改后的.htaccess如下:
RewriteEngine on # 将类似 view-seller/xxxx 的URL转换为 view-seller.php?id=xxxx RewriteRule ^([^/]+)/([^/]+)$ $1.php?id=$2 [NC,L] # 原有移除.php后缀的规则 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [NC,L]
关键说明:
- 规则顺序:必须把带ID的转换规则放在前面,否则服务器会优先匹配到普通的
.php后缀添加规则,导致ID部分被当成普通文件名处理。 - 通用匹配:上面的规则适用于所有类似
xxx/yyyy结构的URL,比如view-product/123会自动转为view-product.php?id=123。如果只需要针对view-seller单独处理,可以把第一条规则改成:RewriteRule ^view-seller/([^/]+)$ view-seller.php?id=$1 [NC,L] - 验证环境:确保你的Apache服务器已经开启了
mod_rewrite模块,并且.htaccess文件放置在localhost/new/目录下(和你的PHP文件同级)。
内容的提问来源于stack exchange,提问作者Mark nicholas Razon
相关产品推荐
相关产品推荐

