У меня есть следующие правила перезаписи 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]
RewriteEngine
Я близко?
Спасибо
Вы очень близки:
Шаг 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)
}
На шаге 4 он должен просто проверить, существует этот файл или нет, независимо от того, был ли он запрошен или нет.
Вы действительно это тестировали? Я не уверен, можно ли выполнить «перенаправление» с кодом, отличным от 3XX.