Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / Apache 2 / Trucs et astuces Apache 2

Trucs et astuces Apache 2

Par Pierre-Yves Landuré Dernière modification 02/03/2018 20:35

É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>"

Remerciements