如何通过.htaccess配置将PDF旧链接重定向至/downloads父文件夹
基于.htaccess的PDF链接重定向实现方案
请先确认Apache服务器已开启mod_rewrite模块,以下规则写入站点根目录的.htaccess文件即可生效。
方案1:仅移除/downloads目录后的多余子层级(匹配需求1)
该方案只会处理/downloads下子目录存放的PDF文件,不会影响站点其他目录的PDF访问,适配你将/downloads下所有子目录PDF迁移到/downloads根目录的场景。
<IfModule mod_rewrite.c> RewriteEngine On # 匹配/downloads下任意子层级的PDF,提取文件名重定向到/downloads根目录 RewriteRule ^downloads/.*?([^/]+\.pdf)$ /downloads/$1 [L,R=301,NC] </IfModule>
参数说明:
R=301表示永久重定向,会通知搜索引擎更新收录的旧链接,适合已经完成文件迁移的正式场景NC表示不区分大小写,同时兼容.PDF大写后缀的链接L表示匹配到本条规则后不再执行后续重写规则,避免规则冲突
方案2:全站所有旧PDF链接统一重定向到/downloads目录(匹配需求2)
如果需要不管PDF原本存放在站点的任何路径,全部重定向到/downloads目录下的同名文件,使用以下规则:
<IfModule mod_rewrite.c> RewriteEngine On # 排除已经在/downloads根目录下的PDF,避免重定向死循环 RewriteCond %{REQUEST_URI} !^/downloads/[^/]+\.pdf$ [NC] # 提取所有PDF请求的文件名,重定向到/downloads目录 RewriteRule ^.*?([^/]+\.pdf)$ /downloads/$1 [L,R=301,NC] </IfModule>
注意事项
- 配置完成后请清空浏览器缓存再测试,301永久重定向会被浏览器默认缓存,未清缓存可能会看到旧的跳转结果
- 若站点其他目录存在和/downloads下重名的PDF文件,优先使用方案1,避免误跳转
- 测试阶段可以先把
R=301改成R=302临时重定向,确认规则符合预期后再改回301,避免错误规则被缓存影响用户访问
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

