如何通过htaccess移除URL参数实现参数值转访问路径
.htaccess查询参数转路径段配置方案
要实现localhost/?url=abc到localhost/abc的地址转换,按以下步骤配置即可:
- 前置检查
- 确认Apache服务已开启
mod_rewrite模块 - 确认站点目录配置中
AllowOverride项设为All,允许.htaccess规则生效
- 确认Apache服务已开启
- 核心规则
将以下代码写入网站根目录的.htaccess文件,放在所有已有规则的最前面:
RewriteEngine On # 外跳:将带?url=参数的根路径请求重定向为路径格式 RewriteCond %{QUERY_STRING} ^url=([a-zA-Z0-9_-]+)$ [NC] RewriteRule ^$ /%1? [R=302,L] # 内转:将路径格式请求隐式转发回原入口程序 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0-9_-]+)$ /?url=$1 [L]
- 注意事项
- 第一条规则末尾的
?是核心配置,作用是丢弃原请求的查询串,避免重定向后地址栏残留?url=xxx参数 - 正则部分
[a-zA-Z0-9_-]是url参数值的允许字符范围,如果参数包含中文、斜杠等字符,可按需调整匹配规则 - 测试阶段请使用
R=302临时重定向,避免301永久重定向被浏览器强缓存导致调试异常,确认效果符合预期后再改为R=301 - 规则中
!-f和!-d判断是为了跳过真实存在的文件、目录请求,避免影响静态资源加载
- 第一条规则末尾的
内容的提问来源于stack exchange,提问作者Grzegorz Czarny
相关产品推荐
相关产品推荐

