Ограничить доступ к корневому веб-сайту apache2, но разрешить его вложенным папкам

Вы можете загрузить всю вещь с помощью wget.

wget -r --level=0 --convert-links --page-requisites --no-parent http://url.com

-r означает, что она рекурсивна

- level = 0 означает, что она опускается на бесконечное количество уровней (так http://url.com/pictures/babes/pics.html будет сохранен не только на странице верхнего уровня)

- convert-links означает, что он преобразует ссылки из link в link

- page-requisites означает, что он загружает все, что требуется для правильной отображения страницы. Как изображения, javascripts и т. Д.

- no-parent означает, что он не загружает страницы, которые «выше». Поэтому, если вы хотите http://url.com/pictures/babes/pics.html и «ниже», http://url.com/index.html не будет загружен.

2
задан 31 March 2012 в 04:05

1 ответ

похоже, что вы сказали Apache, чтобы требовать пароль для вашего веб-корня, но разве вы не использовали Apache, чтобы не требовать его для всех других каталогов?

Внутри вашего .htaccess (или в httpd.conf, они выполняют ту же работу), у вас, вероятно, есть что-то вроде того, что ниже (добавьте ссылку pastebin в ваш файл .htaccess, и я могу это сделать):

<Directory "/www/private">
   Order allow,deny
   Allow from all

   Options Indexes
   AuthType Basic
   AuthName "Private Access"
   AuthUserFile "/www/private/.htpasswd"
   Require valid-user
</Directory>

Но это применимо ко всем каталогам в этот путь. Вы должны явно указать Apache иначе.

<Directory "/var/private/subdir">
    Satisfy any
</Directory>

Вы можете использовать регулярные выражения с <DirectoryMatch "regex">, чтобы обобщить это, просто не забывайте защищать от выражений asdf.com/subdir/../.

UPDATE: Также стоит упомянуть, что хотя большая часть документации уже имеет директивы <Directory[Match]>, существуют также <Location[Match]> директивы, которые полезны в случае символических ссылок в базовой файловой системе.

5
ответ дан 25 May 2018 в 13:06
  • 1
    Привет, это сработало !, теперь я добавляю & lt; Directory / var / private / subdir & gt; Удовлетворите любой & lt; / Directory & gt; к каждому поддиректору, к которому я хочу получить доступ. С наилучшими пожеланиями – razor7 31 March 2012 в 01:44
  • 2
    Я пытаюсь это сделать, и это работает, но я все еще получаю диалог учетных данных для subdir, даже несмотря на то, что страница отображается. Как это может произойти? – markus-tharkun 30 May 2014 в 17:34
  • 3
    @ markus-tharkun Satisfy диктует способ, которым Apache обрабатывает разрешать утверждения и требовать утверждения. & Quot; Любые & Quot; означает, что один из двух должен совпадать. Если у вас нет «Разрешить от всех», или аналогичный, или вы не удовлетворяете ограничение, тогда вам придется выполнить Требовать половину (то есть аутентифицировать). – Huckle 31 May 2014 в 03:11

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

Похожие вопросы: