RewriteRule htaccess, если файл существует

Я хочу использовать htaccess, чтобы проверить, существует ли файл с именем offline.txt в том же каталоге, что и файл htaccess, если он существует, выполните:

RewriteRule ^.*$ /websiteOffline.php [L] 

а также есть исключение для определенного диапазона IP-адресов

Идея состоит в том, что если я хочу отключить весь свой сайт для обслуживания, я могу просто поместить файл с именем offline.txt, и это сделает это и позволит определенным IP-адресам обойти это условие.

Любые предложения о том, как это может быть достигнуто?

Спасибо

я пробовал следующий код, но, похоже, не работает:

RewriteEngine on
RewriteCond /offline.txt -f
RewriteRule  ^(.*)  /websiteOffline.php [L]

Обновить

Просто использовал предложение Джона как следующие:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/offline.txt -f
RewriteRule  ^(.*)  /websiteOffline.php [L]

Небольшая проблема с этим заключается в том, что файл websiteOffline.php находится в папке, где применяется перезаписываемая секунда, поэтому он не может отобразить этот файл. какие-либо предложения

1 ответ

Решение

Вы не можете использовать относительное местоположение для -f тестовое задание. Вам нужно будет указать полный путь:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/folder/offline.txt -f
RewriteCond %{REQUEST_URI} !/websiteOffline.php
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule  ^(.*)  /websiteOffline.php [L]

где /folder/ путь, по которому находится ваш файл htaccess.

Здесь, если ваш IP-адрес 12.34.56.78 и вы попытаетесь получить доступ к папке, она не будет перенаправлять вас.

Другие вопросы по тегам