2012-06-27 2 views
2

Как я могу настроить это в моей конфигурации Apache/HTAccess:Htaccess: Условный Аутентификация

Я хочу HTTP-аутентификации для всех файлов, с одним исключением. Файлы click.php и js/clickheat.js могут быть доступны из 1.2.3.4 без какой-либо проверки подлинности.

Я пробовал FilesMatch, но я не могу его инвертировать. Поэтому я не могу поставить require valid-user. Я думал, используя SetEnv, но как я могу проверить его позже?

<FilesMatch "(click\.php|clickheat\.js)"> 
    # what here? 
</FilesMatch> 

Моя другая идея - использовать mod_rewrite. Ну, я могу разрешить доступ к двум файлам с данного хоста и запретить это из другого места. Но как я могу связать его с HTTP-аутентификацией?

# allows access to two files from the given IP 
RewriteCond %{REMOTE_ADDR} 1\.2\.3\.4 
RewriteCond %{REQUEST_URI} ^/click.php [OR] 
RewriteCond %{REQUEST_URI} ^/js/clickheat\.js 
RewriteRule (.*) - [L] 

# denies everything else 
RewriteRule (.*) - [F,L] 

Так что мое любимое решение будет позволяет HTTP-Auth через RewriteCond/RewriteRule.

Фон (или почему я хочу это сделать): Я пытаюсь обеспечить установку clickheat (http://www.labsmedia.com/clickheat/index.html). И 1.2.3.4 - это удаленный запуск mod_proxy и перенаправление доступа к этим файлам на наш хост clickheat.

ответ

1

Хорошо, я нашел решение:

Order Deny,Allow 
Deny from All 

Satisfy Any 

AuthType Basic 
AuthName "clickheat" 
AuthUserFile /var/www/clickheat/.htpasswd 
Require valid-user 

<FilesMatch "(click\.php|clickheat\.js)"> 
     Deny from All 
     Allow from 1.2.3.4 
</FilesMatch> 

Ключ Satisfy Any который позволяет либо IP- или Авт-доступ.

Смежные вопросы