Что можно сделать с Mod_Rewrite
27 сентября 2007
Здесь:
- HTTP-аутентификация в PHP-CGI (а не только как модуль Apache)
- Поддомен на папку (автоматические VirtualHost'ы-субдомены)
- Редирект на главный домен (с host.com на www.host.com или наоборот)
- (по теме) как создать файл .htaccess в Windows
1. HTTP-аутентификация для PHP-CGI
«HTTP-аутентификация в PHP возможна только при запуске РНР как Apache-модуля» - так написано в документации по PHP.
Итак, если в <apache_dir>/conf/httpd.conf включён модуль Mod_Rewrite (LoadModule...),
то создаём файл .htaccess в папке сайта и добавляем следующие строки:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP:Authorization} !^$
RewriteRule ^file\.php$ file.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]
</IfModule>
Первая строка (Options) может быть не нужна в зависимости от настроек хостинга.
Далее - мы проверяем, что есть непустой хидер Authorization и при запросе к file.php добавляем к нему GET-параметр HTTP_AUTH, при этом сохраняя другие параметры (QSA).
P.S: Также можно установить переменную окружения (environment valiable):
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTH:%{HTTP:Authorization},L]
Она будет доступна через $_SERVER['HTTP_AUTH'], но скорее всего $_SERVER['REDIRECT_HTTP_AUTH'] - этот префикс добавляет апач.
Ещё информация об этом способе: http://joseph.randomnetworks.com/archives/...
После этого надо добавить в начало file.php:
if (isset($_GET['HTTP_AUTH'])) {
preg_match('/^Basic\s+(.*)$/i', $_GET['HTTP_AUTH'], $mHA) or exit("Not supported HTTP_AUTH");
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = split(":", base64_decode($mHA[1]));
}
Теперь пример из документации по php будет работать!