如何通过htaccess配置URL Rewrite规则实现指定URL格式转换
配置前置要求
首先确认你的Apache环境已经开启mod_rewrite模块,且站点根目录的AllowOverride配置设置为All,保证.htaccess文件可以正常生效。
重写规则
将以下代码写入站点根目录的.htaccess文件即可:
RewriteEngine On # 适配Apache 2.4及以上版本,支持自动将产品名转为小写 RewriteRule ^folder/subfolder/([^/]+)--(\d+)\.html$ /p/${tolower:$1}/$2 [R=301,L,NC]
如果你的Apache版本低于2.4,不支持内置tolower函数,且不需要强制产品名小写,可以使用以下规则:
RewriteEngine On RewriteRule ^folder/subfolder/([^/]+)--(\d+)\.html$ /p/$1/$2 [R=301,L,NC]
规则说明
^folder/subfolder/精准匹配原URL的固定路径前缀([^/]+)捕获产品名称部分,匹配所有除路径分隔符/外的字符,对应变量$1--匹配产品名与数字ID之间的固定分隔符(\d+)捕获任意长度的数字ID,对应变量$2\.html$匹配原URL的.html后缀- 参数
R=301表示返回301永久重定向,对SEO更友好,如果需要隐藏重写逻辑、保持用户地址栏显示原URL,直接删除该参数即可 - 参数
L表示命中该规则后不再执行后续的重写规则 - 参数
NC表示匹配时忽略URL大小写
特殊场景适配
如果你的产品名称本身可能包含--字符,可以调整规则为以下写法,保证只会匹配最后一组--作为产品名和ID的分隔符:
RewriteRule ^folder/subfolder/([^/]+?)--(\d+)\.html$ /p/${tolower:$1}/$2 [R=301,L,NC]
内容的提问来源于stack exchange,提问作者Bacelo
相关产品推荐
相关产品推荐

