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

如何通过htaccess实现移除.php后缀并将?参数替换为/路径格式

实现方案

前置要求

  • 确保Apache已开启mod_rewrite扩展
  • 站点配置中对应项目目录的AllowOverride设置为All,允许.htaccess文件生效

操作步骤

在你的testingproject项目根目录下新建.htaccess文件,写入以下配置:

RewriteEngine On
RewriteBase /testingproject/

# 1. 将带.php后缀的请求301重定向到无后缀地址,避免重复收录
RewriteCond %{THE_REQUEST} \s/([^?]+)\.php(\?[^?\s]*)?\s [NC]
RewriteRule ^ %1 [L,R=301,NE]

# 2. 排除真实存在的文件/目录,避免影响静态资源访问
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# 3. 处理带参数的路径:形如 /xxx/yyy 且 xxx.php 存在的请求,转成 xxx.php?mode=yyy
RewriteCond %{DOCUMENT_ROOT}/testingproject/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?mode=$2 [L,QSA]

# 4. 处理无参数的路径:形如 /xxx 且 xxx.php 存在的请求,直接访问 xxx.php
RewriteCond %{DOCUMENT_ROOT}/testingproject/$1.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]

适配说明

  • 配置中的QSA标志支持保留原有查询参数,例如访问user/abc?uid=123时,除了$_GET['mode']可获取到abc外,$_GET['uid']也能正常获取到123
  • 所有规则会优先跳过真实存在的静态文件(图片、CSS、JS等),不会影响静态资源的正常访问
  • 完全匹配需求场景:
    • 访问testing/getdata → 自动映射到testing.php?mode=getdata,可直接通过$_GET['mode']获取参数值
    • 访问user → 直接映射到user.php,无额外参数
    • 访问dashboard → 直接映射到dashboard.php,无额外参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:15:05