Объединить переписывание URL (чтобы заставить https) с http auth? - PullRequest
1 голос
/ 27 января 2010

У меня есть домен, mattpotts.com, и я настроил поддомен dev.mattpotts.com для разработки, а затем скопирую файлы в обычный домен, когда они будут готовы к работе.

Моя структура каталогов следующая и dev.mattpotts.com указывает на dev/

+-public_html/
  +-project1/
  +-project2/
  +-project3/
  +-dev/
    +-project1
    +-project2
    +-project3

Я в основном хочу иметь возможность перейти от http://mattpotts.com/project1 до https://dev.mattpotts.com/project1, добавив dev..

У меня есть следующее .htaccess в dev/, и оно работает, все, что нужно сделать, это заставить https.

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} dev 
RewriteRule ^(.*)$ https://dev.mattpotts.com$1 [R,L]

Я хочу принудительно установить https, чтобы можно было безопасно использовать http auth для каталога. Однако, когда я комбинирую это со следующими правилами, это не работает. У меня настроен .htpasswd, но у меня еще не было формы входа.

AuthType Basic
AuthName "Dev Protected Area"
AuthUserFile .htpasswd
Require valid-user

Как мне успешно объединить в набор .htaccess правил?

Правка, происходят очень странные вещи!

https://dev.mattpotts.com/project1/ отображает «привет!» с не dev версии сайта (обратите внимание, https) http://dev.mattpotts.com/project1/ отображает «Привет, разработчик!» (по желанию) из версии разработчика. Что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 27 января 2010

Вы сказали нам, где находится ваш файл .htaccess, но вы не сказали нам, где находится ваш файл .htpasswd. Согласно документации Apache на AuthUserFile :

Синтаксис: AuthUserFile путь к файлу

File-path - это путь к пользователю файл. Если оно не является абсолютным (, т.е. , если это не начинается с косой черты), это рассматривается как относительно ServerRoot.

Другими словами, он ищет .htpasswd где-то вроде /etc/apache2/.htpasswd. Поэтому либо переместите туда свой файл .htpasswd, либо укажите в своей директиве абсолютный путь к файлу, например ::

AuthType     Basic
AuthName     "Dev Protected Area"
AuthUserFile /home/mattpots.com/public_html/dev/.htpasswd
Require      valid-user

Однако из соображений безопасности я настоятельно рекомендую хранить файл .htpasswd вне корневого каталога документа.

0 голосов
/ 27 января 2010

Эти проблемы должны быть независимы друг от друга: правильно ли я понимаю, что часть "force HTTPS" работает?

Тем не менее, AuthUserFile .htpasswd может искать .htpasswd не в том месте. Самый простой способ - указать полный путь и имя, например, AuthUserFile /home/matt/www/public_html/dev/.htpasswd (или где у вас есть каталог dev).

...