我正在努力将服务器从一个机器转移到另一个机器,并在今晚进行大规模代码更新。为此,我想设置重定向,以便普通网站访问者转到暂存页面。但开发人员、测试人员和客户会转到主站点。
我认为 403 重定向是实现此目的的方法。这是我使用的代码:
Order allow,deny
deny from 80.195.185.214
allow from all
ErrorDocument 403 /holding/index.html
<Files /holding/index.html>
allow from all
</Files>
目前我只是重定向了我的 IP,我将在今晚交换它。
无论如何,问题在于我在保留页面上收到“此网页有重定向循环”。显然“允许所有人”指令未被处理。
有谁知道我可能犯了什么错误?
答案1
HTTP 响应代码 403 为“禁止访问”。这不是重定向。
错误消息“此网页存在重定向循环”表示是某处发生重定向(这意味着 3xx 响应,例如 301 或 302)。您可能有一个 .htaccess 文件,或者 Apache 配置的其他部分导致重定向作为响应发送。
curl -I
尝试使用或请求该页面wget -q -S -O /dev/null
以准确查明正在发送的响应。
答案2
订单允许、拒绝 -> 订单拒绝、允许
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
允许、拒绝 首先,评估所有允许指令;至少必须有一个匹配,否则请求将被拒绝。接下来,评估所有拒绝指令。如果有任何匹配,则请求将被拒绝。最后,任何不匹配允许或拒绝指令的请求都将被默认拒绝。
Deny,Allow 首先,评估所有 Deny 指令;如果匹配,则拒绝请求,除非该请求还匹配 Allow 指令。任何不匹配 Allow 或 Deny 指令的请求均被允许。
答案3
好的 - 现在我为了其他人回答我自己的问题。首先,两位回答者都帮助我跟踪了这个问题。
问题是,当使用 VirtualHosts 时,.htaccess 中的 Files 指令会被忽略,并且 Location 和 Directory 不起作用。
解决方法很简单。在您要打开的子文件夹中创建另一个 .htaccess。