htaccess в корневом каталоге Apache на Windows

Вопрос или проблема

htaccess в корневом каталоге Apache на Windows

Я нахожусь на сервере Windows, установил XAMPP, “C:/xampp/htdocs/” – это моя корневая директория. В этой корневой директории у меня есть несколько проектов, скажем, p1, p2, p3.

Теперь для конкретной директории я предоставил доступ одному из поставщиков, который находится вне моей сети, он получает доступ к моему проекту по адресу https://example.com/p1/.

IP-адрес поставщика был добавлен в белый список в моем файрволе, и поставщик получает доступ к https://example.com/p1/ только с конкретного IP.

Теперь моя проблема заключается в том, что поставщик также может получить доступ к проектам p2, p3 и т.д. по URL https://example.com/p2/,https://example.com/p3/.

Я хочу разрешить доступ только к https://example.com/p1/ для поставщика, я знаю, что могу добавить htaccess в другие директории проектов p2, p3, чтобы запретить доступ с IP поставщика. Но у меня есть сотни проектов в корневой директории, поэтому вместо того, чтобы добавлять htaccess в каждую директорию проекта, я хочу добавить htaccess в корневую директорию, которая будет проверять, если IP принадлежит поставщику, тогда разрешать только директорию /p1/, а для других директорий возвращать 403 Forbidden для поставщика.

Возможно ли это реализовать? Я провел некоторые исследования в интернете, но не нашел решения.

Что-то подобное должно сработать, но я этого не пробовал

<IfModule mod_rewrite.c>
    RewriteEngine On        
    SetEnvIf Remote_Addr "^ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_РАЗРЕШЕННЫЙ_IP$" ALIAS_IP    
    RewriteCond %{REQUEST_URI} ^/p1/ [NC]
    RewriteRule .* - [L]    
    RewriteCond %{ENV:ALIAS_IP} ^1$
    RewriteRule .* - [F]
</IfModule>

Ответ или решение

Да, вы можете настроить файл .htaccess в корневом каталоге вашего веб-сервера Apache (например, в C:/xampp/htdocs/), чтобы ограничить доступ для конкретного IP-адреса в соответствии с вашими требованиями. Вам нужно использовать модуль mod_rewrite для управления доступом.

Исходя из вашего запроса, вот пример кода, который вы можете поместить в файл .htaccess в корневом каталоге:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Укажите IP-адрес разрешенного поставщика
    SetEnvIf Remote_Addr "^ALLOWED_IP_GOES_HERE$" ALLOWED_VENDOR_IP

    # Разрешите доступ только к /p1/ для разрешенного IP
    RewriteCond %{REQUEST_URI} !^/p1/ [NC]
    RewriteCond %{ENV:ALLOWED_VENDOR_IP} ^$
    RewriteRule .* - [F]

</IfModule>

Объяснение кода:

  1. RewriteEngine On: Включает механизм переписывания URL.

  2. SetEnvIf Remote_Addr "^ALLOWED_IP_GOES_HERE$" ALLOWED_VENDOR_IP: Здесь вы должны заменить ALLOWED_IP_GOES_HERE на фактический IP-адрес вашего поставщика. Эта строка создает переменную окружения ALLOWED_VENDOR_IP, если запрос поступает с разрешенного IP-адреса.

  3. RewriteCond %{REQUEST_URI} !^/p1/ [NC]: Эта строка проверяет, был ли запрошен путь, отличный от /p1/. Флаг [NC] означает, что проверка не чувствительна к регистру.

  4. RewriteCond %{ENV:ALLOWED_VENDOR_IP} ^$: Эта строка проверяет, что переменная окружения ALLOWED_VENDOR_IP не установлена, то есть запрос не поступает от разрешенного IP.

  5. *`RewriteRule . – [F]`**: Если предыдущие условия выполнены, этот правило возвращает ошибку 403 (доступ запрещен).

Важные примечания:

  • Убедитесь, что модуль mod_rewrite включен в конфигурациях Apache. Обычно этот модуль включен по умолчанию в XAMPP, но это стоит проверить.
  • После внесения изменений в файл .htaccess обязательно перезапустите сервер Apache, чтобы применить изменения.
  • Если вы заблокируете доступ с определенного IP-адреса, убедитесь, что у вас есть альтернативный способ доступа к вашим проектам, если что-то пойдет не так.

Таким образом, используя приведенный выше код, вы можете настроить доступ для вашего поставщика к конкретному проекту, защищая остальные проекты в корневом каталоге.

Оцените материал
Добавить комментарий

Капча загружается...