使用htaccess重写带动态参数URL实现指定路径跳转咨询
Apache mod_rewrite 动态URL重写规则调整方案
原有规则问题说明
- 正则匹配末尾冗余斜杠:原URL中
folder2后直接拼接查询参数,无尾部斜杠,匹配规则适配范围不足,容易触发其他默认规则 - 未开启查询参数自动追加:RewriteRule默认不会拼接原URL的查询字符串,手动硬写参数无法适配动态参数场景
- 缺少必要重写标记:无跳转标识、规则终止标识,路径替换时被识别为相对路径,导致出现
folder1/myfolder的错误路径
调整后规则
如果规则写在站点根目录的.htaccess文件中,使用以下配置:
RewriteEngine On RewriteRule ^folder1/([0-9]+)/folder2/?$ /myfolder?id=$1 [QSA,L,R=302]
如果规则写在Apache主配置或虚拟主机配置文件中,正则开头增加前导斜杠即可:
RewriteEngine On RewriteRule ^/folder1/([0-9]+)/folder2/?$ /myfolder?id=$1 [QSA,L,R=302]
配置说明
/?:适配folder2后带/或者不带/的两种访问场景QSA:自动将原URL的查询参数(如api=apikey&page=1)追加到新路径的查询字符串后,最终生成id=xxx&原参数的结构L:匹配成功后终止后续重写规则执行,避免二次修改R=302:配置为临时跳转,如需永久生效可修改为R=301- 替换路径开头的
/明确指定为根路径,避免被识别为相对路径拼接在原有路径下
内容的提问来源于stack exchange,提问作者Kaysan Abiputra
相关产品推荐
相关产品推荐

