Le fichier de configuration pour Apache : http.conf, se trouve dans /etc/apache/ . Configuration de base :

   <Directory /var/www/>
   Options Indexes Includes FollowSymlinks MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all
   </Directory>

Il faut ajouter une instruction (AllowOverride AuthConfig ou All) pour indiquer que nous voulons protéger les dossiers suivants :

 <Directory /var/www/>
 Options Indexes Includes FollowSymlinks MultiViews
 AllowOverride AuthConfig
 Order allow,deny
 Allow from all
 </Directory>

AllowOverride AuthConfig demande à Apache de prendre en compte le fichier .htaccess dans le répertoire /var/www/ et tous ses sous-répertoires.

Editez un fichier .htaccess dans le répertoire que vous souhaitez protéger.

 AuthUserFile /var/www/pass/.htpasswd
 AuthName "Accès protégé"
 AuthType Basic

 <Limit GET POST>
 Require valid-user
 </Limit>

On indique que le fichier .htpasswd (qui contient les logins et les mots de pass) se trouve dans /var/www/pass/. Il est préférable de mettre de fichier hors du site lui même.

Sinon on ajoute un fichier .htaccess dans le répertoire où se trouve .htpasswd pour en empêcher l'accés. Dans ce cas là, le fichier .htaccess conitent : deny from all

Vous devez bien sûr mettre le fichier .htpasswd dans le répertoire que vous avez indiqué dans .htaccess. Il se compose toujours comme suit :

    login:passwd

Ces mots de passe doivent être cryptés. Vous obtenez le mot de passe crypté au moyen de la commande htpasswd. Par exemple je souhaite que l'utilisateur toto accede à ma page web avec le mot de passe 'supertoto', je tape la commande :

  [root@glop root]# htpasswd -c /var/www/pass/.htpasswd toto
  New password:
  Re-type new password:
   Adding password for user toto

L'option -c de htpasswd permet de créer le fichier .htpasswd avec le premier couple login:passwd. Si vous souhaité ajouter un deuxième utilisateur, il faut enlever l'option -c :

 [root@glop root]# htpasswd /var/www/pass/.htpasswd tutu
  New password:
 Re-type new password:
 Adding password for user tutu
 

Pour avoir le même favicon sur tous vos vhosts

<Location “/favicon.ico”

>

  SetHandler none

</Location>

alias /favicon.ico /var/www/favicon.ico

Fixes double-login problem and guarantees that htpasswd basic authorization can only be entered using HTTPS.

NOTE: You will only find this method on this site and it is the most secure way to do this.

 SSLOptions +StrictRequire
 SSLRequireSSL
 SSLRequire %{HTTP_HOST} eq "askapache.com"
 ErrorDocument 403 https://askapache.com
 

NOTE:The HTTPS variable is always present,evenif mod_ssl isn't loaded! Based on HTTPS variable (best)

RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Based on SERVER_PORT

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteRule "^/normal/secure(/.*)" "https://%{HTTP_HOST}$1" [R=301,L]

Check to see whether the HTTPS environment variable is set

RewriteCond %{HTTPS} !=on
RewriteRule "^(/secure/.*)" "https://%{HTTP_HOST}$1" [R=301,L]

This lets you use hyperlinks like this

/doc.html:SSL –

> https://google.com/doc.html

/doc.html:NOSSL –

> http://google.com/doc.html

RewriteRule ^/(.):SSL$ https://%{SERVERNAME}/$1 [R,L] RewriteRule ^/(.*):NOSSL$ http://%{SERVERNAME}/$1 [R,L]