Назад | Перейти на главную страницу

Попытка понять этот набор правил перезаписи 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. Если запрошенный путь не является обычным файлом
  6. ЕСЛИ какое-либо из правил 2, 3, 4, 5 верно, отобразить страницу состояния 503?

Я близко?

Спасибо

Вы очень близки:

  • Шаг 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.