SiteGround主机.htaccess含编码空格文件名重定向失效求助
解决带空格文件的.htaccess重定向问题
你的问题出在Apache对请求路径的解码逻辑,不是SiteGround的服务器配置问题,也不是规则语法错误,而是匹配的路径格式不对。
Apache处理请求时,会自动把URL里的%20解码成实际空格,再去匹配Redirect规则。你原来写的%20是编码后的路径,但Apache匹配的是解码后的原始路径,所以规则没命中。
给你几个可行的解决方法:
方法1:直接用空格代替%20
把规则里的%20换成实际空格,保持引号包裹路径:
Redirect permanent "/pdf/Adam Teachings.pdf" "/pdf/Adam.pdf"
方法2:用RedirectMatch正则匹配(更灵活)
用正则表达式同时匹配空格和%20,避免编码差异问题:
RedirectMatch permanent "^/pdf/Adam( |%20)Teachings\.pdf$" "/pdf/Adam.pdf"
或者用\s匹配所有空白字符(包括空格):
RedirectMatch permanent "^/pdf/Adam\sTeachings\.pdf$" "/pdf/Adam.pdf"
方法3:用RewriteRule(适合复杂规则场景)
如果你的.htaccess已启用mod_rewrite,也可以用RewriteRule实现,优先级更高:
RewriteEngine On RewriteRule ^pdf/Adam( |%20)Teachings\.pdf$ /pdf/Adam.pdf [R=301,L,NE]
NE参数用于避免Apache把重定向目标里的空格重新编码,保证URL正常显示。
重要提醒
测试前一定要清空浏览器缓存,因为301永久重定向会被浏览器缓存,旧缓存可能导致你看不到新规则的效果。
内容的提问来源于stack exchange,提问作者PioneerMan
相关产品推荐
相关产品推荐

