Apache защищает все пути, но вносит в белый список определенный путь - PullRequest
0 голосов
/ 19 августа 2010

Ниже мой VHost (который немного изменен, чтобы скрыть некоторые URL):

  1 NameVirtualHost 192.168.1.49:80
  2
  3 <VirtualHost 192.168.1.49:80>
  4   ServerName internal-name.local
  5   ServerAlias *.internal-name.local external-domain.co.uk *.external-domain.co.uk
  6
  7   <Directory "/var/www/html">
  8     AllowOverride All
  9
 10     Order deny,allow
 11     Deny from all
 12
 13     AuthName "Restricted Development Server"
 14     AuthUserFile /var/www/html/.htpasswd
 15     AuthType Basic
 16     Require valid-user
 17
 18     Allow From 192.168.1.
 19
 20     Satisfy Any
 21   </Directory>
 22
 23   <Location /open-path >
 24     Order Allow,Deny
 25     Allow From All
 26     Deny From None
 27   </Location>
 28
 29   LogLevel debug
 30   VirtualDocumentRoot /var/www/html/%1/
 31 </VirtualHost>

Все работает нормально - каждый поддомен получает свою собственную папку в / var / www / html.Любые запросы от 192.168.1.x (через внутреннюю карту домена) могут просматривать сайт без запроса пароля.Любые запросы от внешних IP-адресов (через external-domain.co.uk) будут запрошены для ввода пароля.

Проблема, с которой я столкнулся, заключается в том, чтобы заставить работать последнее правило "местоположения".

Я ничего не делаю (будь то .htaccess или уровень vhost), используя или отключив защиту паролем для URL "/ open-path".

На самом деле - на каждом сайте на этом сервере работает Drupal, который используетURL Rewrite в .htaccess, который отображает все не-файлы в "? Q =" ... Итак: http://domain/foo/bar отображается на: http://domain/index.php?q=foo/bar

Я не думаю, что это должно повлиять на это,это должно быть?

Причина, по которой я указываю на это, заключается в том, что "/ open-path / callback" должен быть открыт для стороннего API, чтобы "пропинговать" сайт.Мне нужно проверить, работает ли этот обратный вызов, прежде чем начать работу, но я не хочу открывать весь сайт из-за защиты паролем.

Я пытался установить для Location значение "/index.php?q=open-path ", это тоже не сработало.

Любое предложение будет с благодарностью оценено!

1 Ответ

3 голосов
/ 12 июля 2011

Это из документов Apache: http://httpd.apache.org/docs/2.2/mod/core.html#require

<Directory /path/to/protected/unprotected>
# All access controls and authentication are disabled
# in this directory
Satisfy Any
Allow from all
</Directory>

Это работает и с Location.

...