У меня есть апач в frontend, которые перенаправляют запрос через переписать правило. Я должен поместить стандартную аутентификацию перед перенаправлением запрос, таким образом, я поместил это в файл конфигурации:
<VirtualHost *:443>
ServerAdmin xxxxxx
DocumentRoot /var/www/html/
ServerName xxxxxxx
RewriteEngine on
ErrorLog logs/error.log
CustomLog logs/access_log common
<Directory /var/www/html/>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/conf/tag.pwd
Require valid-user
RewriteRule ^/(.*) http://xxxxxx:xxx/$1 [P,L]
</Directory>
</VirtualHost>
Но не работает.
Какие-либо предложения?
Я решил разместить условие перезаписи и правило перезаписи вне директивы Locatio:
<Location />
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/conf/tag.pwd
Require valid-user
</Location>
RewriteCond %{LA-U:REMOTE_USER} !^$
RewriteRule ^/(.*) http://xxxxxx:xxx/$1 [P,L]
большое спасибо h0tw1r3 за предложение
* Помните, что директивы Location работают с URL, а не с каталогами. Это означает, что если кто-то создаст псевдоним корня документа, он полностью обойдет эти правила аутентификации. (Подробнее см. http://httpd.apache.org/docs/2.0/mod/core.html#location)
.Обновление : неявное правило каталога гарантирует, что проверка всегда требуется перед выполнением перезаписи. Обнаружено, что различные комбинации модулей apache меняют поведение, поэтому принятый ответ может не всегда работать.
<Location />
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/conf/tag.pwd
Require valid-user
</Location>
<Directory /documentroot>
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule (.*) http://xxxxxx:xxx/$1 [P,L]
</Directory>