我正在尝试通过 .htaccess 在 Apache 中设置一些控件。这有效:
<LimitExcept GET>
Order allow,deny
Allow from all
Deny from all
</LimitExcept>
但这不行:
<LimitExcept POST>
Order allow,deny
Allow from all
Deny from all
</LimitExcept>
请帮助我了解这里发生了什么。
测试用例示例:
我创建了一个简单的 HTML 表单(form.html)来测试:
<form method="post" action="./test/index.html">
<input type="submit" name="submit" value="submit" />
</form>
沿着它,我创建了一个子文件夹“test”,其中包含两个文件:
- index.html(<p>Hello world</p>)
- .htaccess(内容与上面的代码块之一完全相同)
对于 .htaccess 文件的第一个版本,提交 HTML 表单会产生 403 错误,而直接访问(在浏览器中输入完整地址 - 例如 /test/index.html)不会被阻止。这是意料之中的。但是,对于 .htaccess 文件的第二版本,提交 HTML 表单和直接访问都会导致 403 错误。
我不认为这是一个错误(在 Apache 2.2 和 2.4 中测试过),但知道其他人可以复制它会很有帮助。当然,最终我想了解为什么事情没有按预期进行。
答案1
在 Apache 2.4 中只需编辑
<LimitExcept POST>
Deny from all
</LimitExcept>