电商长格式商品URL转短格式的301重定向规则咨询
实现旧商品URL到短格式的mod_rewrite重定向
没问题,我帮你整理了一套精准的mod_rewrite规则,完美适配你的需求,同时避免不必要的匹配和循环重定向:
核心规则(添加到你的.htaccess或Apache配置文件)
# 启用重写引擎 RewriteEngine On # 条件1:排除包含"/info/"的页面(内容页等) RewriteCond %{REQUEST_URI} !/info/ # 条件2:排除已经是新格式的商品URL(避免循环重定向) RewriteCond %{REQUEST_URI} !^/\d+-- # 规则:匹配旧格式URL,提取最后的商品ID+名称部分并重定向 RewriteRule ^.*/(\d+--.*)$ /$1 [L,R=301]
规则细节解释
RewriteEngine On:开启mod_rewrite功能,这是所有重写规则的前提。- 第一条
RewriteCond:使用!表示否定匹配,确保包含/info/的页面不会被这条规则处理,完美排除你提到的内容页面。 - 第二条
RewriteCond:同样是否定匹配,^/\d+--匹配直接以/数字--开头的新格式URL,防止重定向循环(避免新URL又被匹配成旧URL重定向)。 RewriteRule:^.*/:匹配URL开头任意层级的分类路径(不管有多少个分类子目录都能覆盖)。(\d+--.*)$:捕获URL最后一部分(商品ID+名称,比如1450--my-widget),用$1引用这个捕获组。[L,R=301]:L表示这是最后一条要执行的规则;R=301是永久重定向,对SEO友好,告诉搜索引擎更新索引中的URL。
测试建议
- 可以用命令行工具测试重定向是否生效:
响应头里应该能看到curl -I https://yourdomain.com/categoryname/subcat1name/subcat2name/1450--my-widgetLocation: https://yourdomain.com/1450--my-widget和HTTP/1.1 301 Moved Permanently。 - 如果规则不生效,检查Apache是否启用了mod_rewrite模块,以及
.htaccess文件是否配置了AllowOverride All权限。
内容的提问来源于stack exchange,提问作者user78955




