如何通过.htaccess将PDF链接重定向至其他域名的同名PDF文件?
解决PDF文件的.htaccess重定向问题
看起来你在配置PDF重定向时踩了两个常见的.htaccess规则误区,我来帮你梳理问题并给出可行的解决方案:
先分析你之前规则失效的原因
- 第一个规则的错误:
RewriteRule http://html-website.com/F2F_Strategic_Plan.pdf ...写法不对。RewriteRule的第一个参数(匹配模式)只能匹配请求的路径部分(去掉域名、协议和RewriteBase前缀),不能写完整的URL,所以这个规则根本不会触发。 - 第二个规则的问题:
RewriteRule ^F2F_Strategic_Plan\.pdf$ ...本身的匹配模式是对的,但你的现有.htaccess里,所有针对cafarmtofork.com的重定向都套在了RewriteCond %{HTTP_HOST}的条件块下,而这个PDF规则可能没被包含在同一个条件范围内,导致请求来自目标域名时不会触发这条规则。
修正后的完整.htaccess配置
把PDF重定向规则整合到针对目标域名的条件块中,确保它和其他规则一样只对cafarmtofork.com生效:
<IfModule mod_rewrite.c> # Redirect non WordPress pages to corresponding post RewriteEngine On RewriteBase / # 匹配cafarmtofork.com(带www或不带)的请求 RewriteCond %{HTTP_HOST} ^(www\.)?cafarmtofork\.com$ [NC] # 根目录重定向到新站点 RewriteRule ^$ https://theappliancejudge.co.uk [R=301,L] # 营养计划页面重定向 RewriteRule ^CA_NutritionIncentiveProgram\.htm$ https://theappliancejudge.co.uk/ca_nutritionincentiveprogram [R=301,L,NC] # PDF文件临时重定向(测试通过后可改为R=301永久重定向) RewriteRule ^F2F_Strategic_Plan\.pdf$ https://wordpress-website.com/wp-content/uploads/2020/12/F2F_Strategic_Plan.pdf [R=302,L,NC] </IfModule>
关键修改说明
- 统一主机条件:把所有针对
cafarmtofork.com的规则放在同一个RewriteCond块下,这样每条RewriteRule都会继承这个条件,确保只有来自该域名的请求才会触发重定向。 - 正确的匹配模式:
^F2F_Strategic_Plan\.pdf$精准匹配根目录下的该PDF文件(配合RewriteBase /),\.转义了点号(正则中点号是通配符,必须转义),NC标记忽略大小写,避免因URL大小写问题失效。 - 规则顺序:保持规则的逻辑顺序,PDF规则放在其他页面重定向之后不影响,但确保在
L标记的规则之前(不过这里每个规则都有L,所以顺序不冲突)。
测试建议
- 先清除浏览器缓存(或者用隐私窗口访问),避免旧缓存影响测试结果。
- 可以用命令行工具验证,比如执行:
查看返回的响应头中是否包含curl -I http://cafarmtofork.com/F2F_Strategic_Plan.pdfLocation: https://wordpress-website.com/wp-content/uploads/2020/12/F2F_Strategic_Plan.pdf,以及状态码是302(临时重定向)。如果测试正常,再把R=302改成R=301永久重定向。
内容的提问来源于stack exchange,提问作者Francis Alvin Tan
相关产品推荐
相关产品推荐

