2010-08-19 26 views
0

Ci-dessous mon VHost (qui est légèrement modifié pour masquer certains URLS):Apache protège tous les chemins, mais la liste blanche un chemin spécifique

 
    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> 

Tout fonctionne très bien - chaque sous-domaine obtient son propre dossier dans/var/www/html. Toutes les demandes de 192.168.1.x (via une carte de domaine interne) peuvent afficher le site sans invites de mot de passe. Toutes les demandes provenant d'IP externes (via external-domain.co.uk) seront invitées à entrer un mot de passe.

Le problème que je rencontre est de faire fonctionner cette dernière règle de "localisation".

Rien de ce que je fais (que ce soit le niveau .htaccess ou vhost) en utilisant ou désactiverai la protection par mot de passe pour l'URL "/ open-path".

En fait - chaque site sur ce serveur est en cours d'exécution Drupal qui utilise une réécriture d'URL dans le .htaccess qui mappe tous les non-fichiers sur « q =? » ... Alors: http://domain/foo/bar cartes pour: http://domain/index.php?q=foo/bar

Je ne pense pas que cela devrait affecter cela, devrait-il?

La raison pour laquelle je le signale est que "/ open-path/callback" doit être ouvert pour qu'une API tierce puisse "pinguer" le site. J'ai besoin de tester ce rappel fonctionne avant de pousser à vivre, mais je ne veux pas dévoiler l'ensemble du site de la protection par mot de passe.

J'ai essayé de définir l'emplacement à "/index.php?q=open-path", cela n'a pas fonctionné non plus.

Toute suggestion serait grandement appréciée!

Répondre

2

C'est de la documentation 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> 

Cela fonctionne avec l'emplacement ainsi.

+0

A travaillé parfaitement! :-) Désolé pour la réponse massivement retardée, juste en passant et en rangeant mes questions sans réponse. – Nick