Apache不使用%3F处理编码的URL

时间:2012-03-20 12:34:26

标签: apache mod-rewrite

问题网址链接到我的网站的格式为

  

/fullpage.php%3F%20cp3_Hex%3D0F0200%26cp2_Hex%3D000000%26cp1​​_Hex%3DFC2024

未编码的网址是

  

/fullpadge.php?cp3_Hex=0F0200&cp2_Hex=000000&cp1_Hex=FC2024

Apache返回:

  

403:您无权访问/fullpage.php? cp3_Hex = 0F0200&安培; cp2_Hex = 000000

我尝试了以下重写规则

  

RewriteRule ^ / fullpage.php%3F(。*)$ /fullpage.php?$1

无济于事

任何想法

1 个答案:

答案 0 :(得分:-3)

您几乎肯定会收到403错误。 这个错误是因为?是Windows和Linux上的禁止文件/目录名称字符。这意味着当Apache尝试查找名为" /document/root/index.php?blah"的文件或目录时(解码后),它会导致403错误。这是在读取.htaccess文件之前,因此您无法在.htaccess文件中使用mod_rewrite来覆盖此403错误或.htaccess文件中定义的ErrorDocument以捕获此错误。

捕获%3f的唯一方法是在" VirtualHost" 中使用mod_rewrite或ErrorDocument,例如在httpd-vhosts.conf中(或主服务器配置,如果没有" Virtualhost"例如在httpd.conf中)。