我有以下 Apache2 Rewrite 规则,并且正在尝试破译它们背后的含义:
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]
- 打开
RewriteEngine
- 如果请求的地址不是来自 IP 1.2.3.4
- 如果请求的 URI 不包含以 .css 或 .gif 或 .jpg 或 .png 结尾的资源
- 如果 URI 请求 ../tmp/stop.txt(并且它是一个文件)
- 如果请求的路径不是常规文件
- 如果规则 2、3、4、5 中的任何一条为真,则显示 503 状态页面?
我接近了吗?
谢谢
答案1
您已经非常接近了:
步骤 2 :它不是请求的地址,而是客户端地址(发出请求的主机的 IP 地址):如果客户端地址不是 1.2.3.4
步骤 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) }
答案2
在步骤 4 中,它只需验证该文件是否存在,无论是否请求该文件。
您真的测试过这些吗?我不确定您是否可以使用 3XX 以外的代码进行“重定向”。