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

如何编写简单RewriteRule规则实现友好URL重写

调整后的.htaccess配置方案

你可以直接用下面的代码替换你原有的.htaccess内容,放置在folder目录下即可生效:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# 原有单级请求自动补.php后缀规则优化
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]

# 原有自定义路由规则保留,放置在通用规则前避免被覆盖
RewriteRule ^registros/entradas/?$ frmEntradas.php [QSA,L]

# 两级友好URL重写规则,适配/folder/xxx/xxx 格式请求
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?second_param=$2 [QSA,L]

规则说明

  • 新增的-MultiViews参数用于关闭Apache默认的内容协商逻辑,避免和重写规则产生冲突导致路径解析异常
  • 优化后的.php后缀补全规则增加了目录存在性校验、对应php文件存在性校验,避免无效重写不存在的资源
  • 两级路径匹配规则会自动将https://example.com/folder/abc/def的请求转发到同目录下的abc.php,同时将def作为second_param参数传递,你可以根据自己的业务需求修改参数命名
  • QSA标识会自动保留原始请求中附带的GET参数,不会出现参数丢失问题

如果需要适配任意多级路径的场景,你可以把上述两级规则替换为全路径转发到统一入口文件的规则,适配自定义路由逻辑:

# 所有不存在的资源请求统一转发到index.php处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?full_path=$1 [QSA,L]

配置后你可以在index.php中通过$_GET['full_path']获取完整的路径字符串,自行拆分处理即可实现任意格式的友好URL适配。

内容的提问来源于stack exchange,提问作者Gustavo Rodríguez Sánchez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:06:03