Мой веб-сайт является подвижным репозиторием с несколькими подрепозиториями. Я должен удостовериться, что запрещаю доступа ко всем файлам в каждом .hg каталоге на сервере.
Например, я имею http://example.com/.hg/
и http://example.com/subrepo1/.hg/
Я добавил следующее к .htaccess:
<Files ~ "^\.(hg|ht)">
Order allow,deny
Deny from all
</Files>
Это - хорошее начало, поскольку оно запрещает доступа к началу файлов .hg
и .ht
, но это не запрещает доступа к файлам внутри .hg
каталоги, поэтому если кто-то вводит, например http://example.com/.hg/branch
, файл ответвления будет отображен в их браузере.
Что я должен сделать, чтобы удостовериться, что эти файлы не отображены пользователю? Я хотел бы отправить или 403 или 404 назад к браузеру, если кто-то пытается получить доступ к файлу в ком-либо .hg
каталог на моем сервере.
Этот вопрос также важен для любого, веб-сайт которого является подверсией / репозиторий SVN.
Если вам не нужно использовать mod_rewrite
, то вы можете просто сделать следующее:
RedirectMatch 404 /\\.hg(/|$)
(Полное раскрытие: ответ адаптирован для Mercurial из этого вопроса о том, как сделать то же самое для Subversion).
У вас всегда есть возможность разместить файлы .htaccess в этих папках и запретить любой доступ к этой папке.
Я полагаю, вам нужно решение, в котором вам не нужно помещать файлы .htaccess в каждую папку и подпапку?
Попробуйте следующее (при условии, что у вас есть ssh-доступ к веб-серверу):
Содержимое:
Order deny, allow
Deny from all
Выполните следующую команду:
find. -type d -name .hg -exec cp ./.htaccess {} \;
После этого снова удалите файл .htaccess из корня документа
Это гораздо менее беспокоит, если вы просто держите репозитории вне DocumentRoot. Вероятно, вы используете hgweb или hgwebdir, для которых не требуется, чтобы файлы находились внутри DocumentRoot, поэтому не делайте этого. Поместите их в / home / hg / repos или что-то в этом роде и настройте свой hgwebdir.conf, чтобы он смотрел туда.
Единственная причина иметь репозитории внутри DocumentRoot - это включить статический http URL-адрес для mercurial, но это очень медленно, и hgweb всегда предпочтительнее, когда это возможно.