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

如何使用.htaccess将带参数的PHP URL转换为友好伪静态URL

解决URL重写问题:将带参数URL转换为友好格式

问题描述

我在news-event-listing.php页面中通过链接把id参数传递到news-inner.php页面,当前访问URL是http://localhost/glc_css/news-inner.php?id=6,希望将其转换成localhost/glc_css/service/6的友好形式。我尝试的.htaccess代码如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#RewriteRule ^ABOUT  about.php [NC,L]
#RewriteRule ^CONTACT  contact.php [NC,L]
#RewriteRule ^PRODUCT  product.php [NC,L]
RewriteRule ^service/([^/\.]+)?$ /news-inner.php?id=$1 [L]

修正方案

你的代码存在两处关键问题,调整后即可实现需求:

  1. 路径匹配错误:最后一条规则中的/news-inner.php是绝对路径,会直接指向网站根目录,但你的项目在glc_css子目录下,需改用相对路径。
  2. 规则顺序冲突:自动添加.php的规则会优先匹配service/6,尝试查找service/6.php,干扰友好URL的重写逻辑,需把友好URL规则前置。

修正后的.htaccess代码:

RewriteEngine On

# 优先处理service/xxx的友好URL重写
RewriteRule ^service/([^/.]+)$ news-inner.php?id=$1 [NC,L]

# 再处理自动添加.php后缀的规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]

补充说明

  • 友好URL规则前置,避免被自动补全.php的规则拦截。
  • 移除目标路径前的斜杠,确保在glc_css子目录下能正确定位news-inner.php。
  • 添加RewriteCond %{REQUEST_FILENAME} !-d规则,防止把真实目录识别为PHP文件处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:25:29