试图了解这组Apache2重写规则

我有以下的Apache2重写规则,我试图破译他们背后的意思:

1. RewriteEngine on 2. RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4 3. RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$ 4. RewriteCond %{DOCUMENT_ROOT}/../tmp/stop.txt -f 5. RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 6. RewriteRule ^(.*)$ /$1 [R=503,L] 
  1. 打开RewriteEngine
  2. 如果请求的地址不是来自IP 1.2.3.4
  3. 如果请求的URI不包含资源,则以.css或.gif或.jpg或.png结尾
  4. 如果URI请求../tmp/stop.txt(并且它是一个文件)
  5. 如果请求的path不是普通文件
  6. 如果规则2,3,4,5中的任何一个为真,则显示503状态页面?

我closures了吗?

谢谢

你非常接近:

  • 步骤2:不是请求的地址,而是客户端地址(发出请求的主机的IP地址):如果客户端地址不是1.2.3.4

  • 第四步:正如@Florin Asavoaie提到的:这只是检查文件../tmp/stop.txt存在,无论是否被请求。

  • 第5步:如果请求的文件不存在

  • 第6步:它是AND而不是OR (所有规则必须匹配)。 所以:

     if (rule 2 is true) AND (rule 3 is true) AND (rule 4 is true) AND (rule 5 is true) { Then return 503 - Service Temporarily Unavailable (which works) } 

在步骤4中,只要确认该文件是否存在,无论是否被请求。

你真的testing过这些吗? 我不确定您是否可以使用3XX以外的代码进行“redirect”。