使用Apache .htaccess 301重定向移除URL末尾冗余内容的技术需求
Apache .htaccess 301重定向移除URL末尾冗余内容的技术需求
嘿,这事儿用Apache的.htaccess写个简单的重定向规则就能搞定,正好适配你上千个URL的批量处理需求!
先明确你的核心诉求:所有末尾带有Card%20link(也就是URL转义后的"Card link")的动态路径URL,都要通过301永久重定向,跳转到去掉这个冗余后缀的版本,同时完整保留前面的动态路径部分。
直接上可用的规则代码,你把这段内容放到站点根目录的.htaccess文件里就行:
RewriteEngine On RewriteBase / # 匹配末尾带"/Card link"的URL,301重定向到移除该后缀的目标地址 RewriteRule ^(.*)/Card\slink$ /$1/ [L,R=301,NC]
给你拆解下这个规则的细节:
RewriteEngine On:必须先开启重写引擎,否则所有规则都不会生效^(.*)/Card\slink$:^(.*)会捕获/Card link之前的所有动态路径内容;\s用来匹配URL里转义后的空格(对应%20);$确保这部分内容是URL的末尾,避免误匹配中间包含该字符串的URL/$$1/:把捕获到的动态路径内容拿过来,加上末尾的斜杠,就是你需要的目标URLL:表示这是最后执行的规则,避免后续规则干扰;R=301是永久重定向,对SEO优化很友好;NC是不区分大小写,万一有些URL里是小写的card link也能被正确匹配
如果你想更精确地匹配编码后的%20,也可以把规则写成这样:
RewriteRule ^(.*)/Card%20link$ /$1/ [L,R=301,NC]
测试的时候建议先把R=301改成R=302(临时重定向),确认所有URL都能正确跳转后再改回301——毕竟301会被浏览器缓存,要是规则写错了,改起来会比较麻烦。
最后提醒下:确保你的服务器已经启用了mod_rewrite模块,而且.htaccess文件有足够的权限让服务器读取哦!
备注:内容来源于stack exchange,提问作者Adamo Santos
相关产品推荐
相关产品推荐

