如何在.htaccess中匹配含%2FE的URL并重定向至博客页面
解决.htaccess匹配%2FE开头URL的重定向问题
你的问题核心是mod_rewrite的RewriteRule默认匹配解码后的URL路径,所以URL中的%2F会被自动解码为/,你原代码里的%2FE是在匹配字面量的%2FE,自然匹配不到实际请求。
给你两种可行的解决方案:
方案一:匹配解码后的路径(推荐)
直接匹配解码后的/E开头的路径,因为%2FE解码后就是/E,代码如下:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配以/E开头的所有路径,重定向到/blog RewriteRule ^/E /blog [R=301,L] # 如果你的.htaccess放在网站根目录,也可以去掉开头的/,写成: # RewriteRule ^E /blog [R=301,L] </IfModule>
方案二:匹配编码后的原始请求(针对特殊场景)
如果需要严格匹配编码后的%2FE(比如请求确实是带%2F编码的),可以用RewriteCond匹配未解码的REQUEST_URI变量,代码如下:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配REQUEST_URI中以/%2FE开头的请求 RewriteCond %{REQUEST_URI} ^/%2FE RewriteRule ^ /blog [R=301,L] </IfModule>
注意:
- 测试重定向时建议先用
R=302临时重定向,确认规则生效后再改成R=301永久重定向,避免浏览器缓存旧规则。 - 如果你的.htaccess在子目录,规则中的路径需要对应调整。
内容的提问来源于stack exchange,提问作者user36319
相关产品推荐
相关产品推荐

