.htaccess null变量给出403禁止错误

时间:2013-04-02 14:59:58

标签: php regex .htaccess mod-rewrite

我正在使用这样的.htacces文件:

RewriteRule ^folder/(.*).html$ file.php?mode=$1 [L,NC]

此网址没有问题:

http://www.example.com/folder/qwerty.html

但它正在给出403这样的禁止错误:

http://www.example.com/folder/.html

(P.s:这个问题不是什么大问题。只有我想学习如何解决这个问题,我出于安全考虑需要修复它。)

(P.s2:我试图将file.php更改为“if mode == null”但仍然是403错误。)

...谢谢

1 个答案:

答案 0 :(得分:1)

Apache的默认配置包含一个部分:

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

包含“/.html”的URL与此匹配,作为带有“.ht”的路径的文件部分,因此它在达到重写规则之前拒绝访问。

你必须覆盖这个;通过使上面的部分更具体,只匹配.htaccess和.htpasswd来拒绝它们,或者通过覆盖匹配来重新允许.html,例如:

<Files ~ "^\.html">
    Order allow,deny
    Allow from all
</Files>

...在.htaccess文件中。