Apache - популярный веб-сервер, используемый миллионами веб-сайтов и приложений. Часто команды веб-разработчиков используют систему контроля версий git для управления исходным кодом и настраивают Apache на чтение файлов и данных из директории git-репозитория. Каждый git-репозиторий имеет скрытый каталог .git, в котором хранится ключевая информация, такая как index, head и т.д. Поскольку Apache читает файлы из папки git-репозитория, возможно, что сервер Apache в конечном итоге обслуживает содержимое каталога .git. Но каталог .git нужен только для управления репозиторием и не должен быть виден в URL вашего сайта.
Поэтому вам нужно запретить Apache обслуживать каталог .git. В этой статье мы узнаем, как запретить Apache обслуживать каталог .git. Вы можете использовать его для блокирования доступа к каталогу .git.
Как запретить Apache обслуживать каталог .git
Чтобы выполнить следующие шаги, вам необходимо открыть файл .htaccess вашего сервера Apache. Если вы еще не настроили mod_rewrite/.htaccess на вашем сервере Apache, то выполните шаг № 1 ниже, в противном случае переходите к шагу № 2.
1. Включите mod_rewrite
Если вы уже включили mod_rewrite на вашем сервере Apache, вы можете пропустить этот шаг. В противном случае выполните следующие команды в соответствии с вашим дистрибутивом Linux.
Ubuntu/Debian
1 | sudo a2enmod rewrite |
Redhat/CentOS/Fedora
Откройте файл конфигурации Apache в текстовом редакторе.
1 | sudo nano /etc/apache2/httpd.conf |
ИЛИ
1 | sudo nano /etc/httpd/httpd.conf |
Найдите следующую строку.
1 | #LoadModule rewrite_module modules/mod_rewrite.so |
Откомментируйте ее, удалив # в ее начале. Если вы не найдете эту строку, добавьте ее заново.
Также найдите следующий тег Directory и измените AllowOverride с None на All.
1 2 3 4 5 6 7 8 9 | <Directory /var/www/html> # # AllowOverride контролирует, какие директивы могут быть помещены в файлы .htaccess. # Это может быть "All", "None" или любая комбинация ключевых слов: # Options FileInfo AuthConfig Limit # AllowOverride All . . . </Directory> |
2. Откройте файл .htaccess
Откройте терминал и выполните следующую команду, чтобы открыть файл .htaccess в корневой папке вашего сайта. Если корень вашего сайта расположен в другом месте, то измените путь к файлу в соответствии с вашими требованиями.
1 | sudo nano /var/www/html/.htaccess |
3. Предотвращение директории .git
Добавьте следующие строки, чтобы предотвратить обслуживание каталога .git.
1 2 3 4 | <Directorymatch "^/.*/\.git/"> Order 'deny,allow' Deny from all </Directorymatch> |
Сохраните и закройте файл. Приведенный выше код соответствует всем URL, где имя каталога начинается с '.git' и блокирует его, возвращая ответ 403 Access Forbidden.
В качестве альтернативы вы можете добавить следующую директиву RedirectMatch для поиска и блокирования URL, начинающихся с .git. Вы можете использовать код ответа 404 (Page Not Found) или 403 (Access Forbidden) в соответствии с вашими требованиями.
1 | RedirectMatch 404 /\.git |
4. Перезапустите сервер Apache
Перезапустите сервер Apache, чтобы применить изменения.
1 | sudo service apache2 restart |
Заключение
В этой статье мы узнали, как запретить apache обслуживать каталог .git. Это можно использовать для блокирования доступа к директории .git.