如何通过.htaccess实现子目录路径到URL参数的重定向
.htaccess 配置路径到URL参数重定向方法
要实现domain.com/search/[搜索词]自动跳转到domain.com/searchresult?search=[搜索词]的效果,直接在网站根目录的.htaccess文件中添加如下mod_rewrite规则即可,使用前请确认服务器已开启Apache mod_rewrite模块(绝大多数商用虚拟主机默认开启该模块)。
可直接使用的配置代码
# 开启重写引擎 RewriteEngine On # 匹配/search/路径后的参数并跳转 RewriteRule ^search/([^/]+)/?$ searchresult?search=$1 [L,R=302]
规则说明
- 正则匹配逻辑:
^search/([^/]+)/?$- 固定匹配路径前缀
/search/ - 自动捕获前缀后到下一个斜杠/路径结尾的内容(即示例中的
123),存入匹配变量$1 - 自动兼容路径末尾带斜杠的场景,
/search/123/和/search/123都能正常匹配
- 固定匹配路径前缀
- 跳转标记说明:
L:匹配到当前规则后停止执行后续重写规则,避免规则冲突R=302:标记为临时重定向,测试阶段建议保留该配置;确认规则完全正常后可替换为R=301开启永久重定向,注意301重定向会被浏览器强缓存,调整规则前务必清理浏览器缓存测试。
常见场景调整
- 如果需要做伪静态静默跳转(用户访问
/search/123时地址栏保持不变,后台实际加载searchresult页面内容),直接删除规则中的R=302标记,仅保留[L]即可。 - 如果网站部署在域名的子目录下(例如
domain.com/site/),需要额外添加RewriteBase配置指定根路径,示例如下:RewriteEngine On RewriteBase /site/ RewriteRule ^search/([^/]+)/?$ searchresult?search=$1 [L,R=302] - 如果搜索词可能包含斜杠(例如多级关键词路径),可以把正则替换为
^search/(.+)/?$,即可捕获/search/key1/key2这类路径的完整内容作为search参数。
内容的提问来源于stack exchange,提问作者Noah Rasmussen
相关产品推荐
相关产品推荐

