You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.htaccess重写PDF旧链接:替换斜杠为下划线并跳转至统一目录

解决PDF路径重定向与斜杠替换的.htaccess方案

我明白你现在的需求:把分散在各级目录的PDF统一迁移到/pdf目录,同时把旧路径里的所有斜杠替换成下划线,还要保证旧链接不失效。你当前的规则只能完成目录跳转,但没处理斜杠替换,咱们来修改一下:

最终的.htaccess代码

RewriteEngine On
RewriteBase /

# 递归替换路径中的所有斜杠为下划线(仅针对非/pdf目录的PDF请求)
RewriteCond %{REQUEST_URI} !^/pdf/
RewriteCond %{REQUEST_URI} \.pdf$ [NC]
RewriteRule ^(.*)/(.*\.pdf)$ $1_$2 [N,DPI]

# 将处理后的PDF请求重定向到/pdf目录
RewriteCond %{REQUEST_URI} !^/pdf/
RewriteCond %{REQUEST_URI} \.pdf$ [NC]
RewriteRule ^(.*\.pdf)$ /pdf/$1 [R=301,L]

代码解释

  • 第一组规则:

    • RewriteCond %{REQUEST_URI} !^/pdf/:排除已经在/pdf目录下的请求,避免循环重定向
    • RewriteCond %{REQUEST_URI} \.pdf$ [NC]:只匹配PDF文件([NC]表示不区分大小写,兼容.PDF后缀的文件)
    • RewriteRule ^(.*)/(.*\.pdf)$ $1_$2 [N,DPI]:把路径中最后一个斜杠替换成下划线,[N]标志会让Apache重新处理修改后的URL,直到路径里没有斜杠为止;[DPI]确保处理过程中不区分大小写
  • 第二组规则:

    • 当所有斜杠都被替换成下划线后,这条规则会把处理后的文件名重定向到/pdf目录下
    • R=301表示永久重定向,对SEO友好;如果还在测试阶段,可以改成R=302临时重定向,确认没问题再换回301
    • L标志表示这是最后一条规则,处理完就停止后续规则

示例验证

  • 旧链接:http://www.example.org/agriculture/gaoag/092505.pdf
    经过第一组规则递归替换后,路径变成agriculture_gaoag_092505.pdf,然后第二组规则重定向到http://www.example.org/pdf/agriculture_gaoag_092505.pdf
  • 旧链接:http://www.example.org/BOR/2011/2011/OPS/PLAN/040611.pdf
    最终会重定向到http://www.example.org/pdf/BOR_2011_2011_OPS_PLAN_040611.pdf,完全符合你的需求

注意事项

  1. 确保你的服务器已经启用了mod_rewrite模块
  2. 把这段代码放在.htaccess文件的最顶部,避免和其他规则冲突
  3. 测试时可以先使用R=302临时重定向,确认所有旧链接都能正确跳转后,再改成R=301永久重定向

内容的提问来源于stack exchange,提问作者Brandan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:50:54