Trucs et astuces Apache 2
Éléments de configuration pratiques ou peu usités pour Apache 2.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Prérequis
Ce guide nécessite le script a2tools mis en place par le guide Installer et configurer Apache 2 sur Debian.
Configurations
Déboguer les règles RewriteRule
Pour déboguer les règles RewriteRule, ajoutez ces lignes à la configuration du VirtualHost concerné:
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5
Rechargez la configuration du serveur:
service apache2 reload
Ouvrez le fichier journal:
command tail -f "/var/log/apache2/rewrite.log"
Rechargez la requête HTTP à analyser.
Désactiver le HTTPS pour une URL uniquement
Renseignez le nom de domaine du site:
DOMAIN="www.domain.com"
Il est simple de rediriger l'ensemble des requêtes HTTP vers la version HTTPS d'un site à l'aide d'une directive RedirectPermanent telle que mise en place par:
command a2tools -t "redirect" "${DOMAIN}" "https://${DOMAIN}/"
Pour désactiver cette redirection uniquement pour une URL, utilisez:
command a2tools add-custom "${DOMAIN}" " # Redirect everything but one URL match to https.
RewriteEngine On
RewriteCond "%{REQUEST_URI}?%{QUERY_STRING}" !^/public.php\?op=rss
RewriteRule ^/(.*) https://${DOMAIN}/\$1 [R=301,L]
# The root folder of this virtual host.
DocumentRoot /opt/${DOMAIN}
# Some options for the root folder.
# Read Apache 2 documentation to know exactly what is done.
<Directory /opt/${DOMAIN}>
Options Indexes FollowSymLinks MultiViews
# If you want to enable overrides, you should read:
# http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
AllowOverride Limit
Order allow,deny
Allow from all
</Directory>"
Remplacez "/public.php\?op=rss" par le masque d'URL correspondant à la requête que vous souhaitez conserver en HTTP.
Retirez "?%{QUERY_STRING}" si l'URL concernée n'utilise pas de paramètres de GET.
Rediriger un accès HTTP vers HTTPS en conservant le nom d'hôte
Pour rediriger automatiquement un les accès en HTTP à un ensemble de sous-domaines d'un domaine vers leurs équivalents en HTTPS, renseignez le domaine principal (utilisé pour nommer le fichier du VirtualHost créé):
DOMAIN="suffix.domain.com"
Renseignez le sélecteur des sous-domaines à rediriger (* sélectionne tout):
OTHER_DOMAINS="*-suffix.domain.com"
Créez la configuration redirigeant tous les domaines vers leur équivalent HTTPS (la ligne réalisant la redirection est en gras):
command a2tools add-custom --alias "${OTHER_DOMAINS}" "${DOMAIN}" "
<IfModule mod_rewrite.c>
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# Redirect every body to the HTTPS site.
# This make sure that all users use secure version of the site.
# Note the "permanent" : It is good for search engine optimization :D.
Redirect permanent / https://${DOMAIN}/
# This Location directives allow users to access the redirection.
# Do not remove this if you want your site to work.
<Location />
Order deny,allow
Allow from all
</Location>"