【问题标题】:.htaccess null variable giving 403 forbidden error.htaccess 空变量给出 403 禁止错误
【发布时间】:2013-04-02 14:59:57
【问题描述】:

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

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

这样的网址没有问题:

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

但它给出了类似这个 URL 的 403 禁止错误:

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

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

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

谢谢...

【问题讨论】:

  • if (empty($_GET'mode'])) { // mode not set } in file.php?
  • 我认为所有的.ht*文件都是默认禁止的,因为.htaccess文件就是这样的。
  • @mkjasinski 看看 p.s2。页面未执行。文件执行前出现错误。
  • 我认为解决必须像这样:(.*) 模式表示所有字符。但如果我能说出模式中的所有字符和空值;这将解决这个问题。但是怎么做呢?

标签: php regex .htaccess mod-rewrite


【解决方案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 文件中。

【讨论】:

  • 感谢您的回答。但是还是403错误。这是合乎逻辑的答案,但对我不起作用。
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多