Faq Apache

41
FAQ du serveur HTTP Apache Date de publication : 17/12/2008 Dernière mise à jour : 30/03/2010 Cette FAQ a été réalisée à partir des contributions des membres du forum Apache de developpez.com et de l'équipe de rédaction. Nous sommes perpétuellement à l'écoute de vos suggestions et corrections, aussi mineures soient-elles. N'hésitez pas à nous en faire part par l'intermédiaire de la discussion prévue à cet effet. Nous tenons à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète.

Transcript of Faq Apache

Page 1: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 1/40

 

FAQ du serveur HTTP Apache

Date de publication : 17/12/2008

Dernière mise à jour : 30/03/2010

Cette FAQ a été réalisée à partir des contributions des membres du forum Apache de

developpez.com et de l'équipe de rédaction.

Nous sommes perpétuellement à l'écoute de vos suggestions et corrections, aussimineures soient-elles. N'hésitez pas à nous en faire part par l'intermédiaire de ladiscussion prévue à cet effet.

Nous tenons à souligner que cette faq ne garantit en aucun cas que les informations

qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine.

Cette faq ne prétend pas non plus être complète.

Page 3: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 3/40

 

FAQ du serveur HTTP Apache

- 3 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

1. Généralités (3) ........................................................................................................................................................................... 4

2. Configuration générale (21) ...................................................................................................................................................... 6

2.1. Les fichiers htaccess (8) ................................................................................................................................................. 122.2. HTTPS (4) ...................................................................................................................................................................... 17

3. Environnement (2) ...................................................................................................................................................................20

4. Modules (14) ............................................................................................................................................................................22

4.1. PHP (3) ........................................................................................................................................................................... 23

4.2. La réécriture d'URL (URL Rewriting) (8) ..................................................................................................................... 29

4.3. Les jounaux (1) ...............................................................................................................................................................36

5. Erreurs courantes et résolution (6) ..........................................................................................................................................37

6. Particularités de certains hébergeurs (1) ................................................................................................................................. 39

6.1. Free (1) ............................................................................................................................................................................40

Page 4: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 4/40

 

FAQ du serveur HTTP Apache

- 4 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Généralités

Qu'est-ce que Apache ?Auteurs : berry ,

Apache est le serveur web le plus répandu sur Internet (50% des serveurs en sont équipés selon Netcraft en date de janvier 2008). Il s'agit d'un programme qui tourne sur une machine (un serveur ou sur un poste en local) qui permetà des clients d'accéder à des pages web, ou tout autre fichier présent sur le serveur à partir d'un navigateur ou toutautre programme supportant le protocole HTTP.

Apache dispose de nombreuses fonctionnalités, il permet l'utilisation de modules, la possibilité de définir uneconfiguration spécif ique pour chaque répertoire partagé, des restrictions, ... Il est souvent utilisé avec des modulescomme Perl et/ou PHP afin de rendre le contenu des pages dynamiques.

• C'est un serveur web HTTP aussi flexible que puissant• Il implémente les derniers protocoles, HTTP/1.1 (RFC2616) inclus• Il supporte des modules externes 100% configurables• Il peut être personnalisé en écrivant soi-même ses propres modules en utilisant l'API Apache• Son code source est disponible et est accompagné d'une licence non restrictive• Il peut tourner sous la plupart des plateformes existantes (autant à base UNIX que NT)• Il est souvent mis à jour par une équipe très active• Il est testé en permanence, et les bugs sont corrigés rapidement.

Quelle version d'Apache choisir ?

Auteurs : berry ,Il existe deux grandes familles de versions Apache : 1.3.x et 2.x.

Apache 2.x apporte quelques nouveautés technologiques dont le support natif de IPv6, LDAP et SSL/TLS (qui seprésentait sous forme de module, externe, dans les versions antérieures). L'organisation des fichiers de configurationoffre également plus de souplesse suite à l'évolution de la directive Include (versions 2.0.41 et plus).

Certains vantent les performances des versions 2.x, d'autres la stabilité des 1.3.x. A vous d'essayer et de voir laquellevous conviendrait le mieux.

Comment se procurer Apache ?

Auteurs : berry , _Mac_ ,

Vous pouvez télécharger Apache sur le site officiel. Sont présentes sur ce site les sources (à compiler donc) ainsi queles binaires pour MS Windows. Pour obtenir directement les binaires en paquetage .rpm, .deb, .tgz, ... parcourez le sitede votre distribution ou bien les CDs d'installation. En effet, bien souvent Apache est présent par défaut en tant queserveur Web pour la plupart des distributions Linux, systèmes Unix dont BSD et autres.

Il existe également des solutions tout en un permettant d'aisément mettre en place un environnement de type AMP(Apache, MySQL, PHP). Citons en quelques uns :

• WAMP Server (exclusivement prévu pour Windows)• XAMPP

Page 5: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 5/40

 

FAQ du serveur HTTP Apache

- 5 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

• Zend Core• EasyPHP (Windows uniquement)

Page 6: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 6/40

 

FAQ du serveur HTTP Apache

- 6 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Configuration générale

Où se trouve le fichier de configuration httpd.conf ?Auteurs : mathieu ,

Ce fichier, qui s'appelle souvent httpd.conf, se trouve souvent dans le répertoire /etc/{httpd,apache(2)}/conf/ sous Linuxet dans le répertoire conf du répertoire d'installation d'Apache sous Windows.

 Après modification de ce fichier, il faut redémarrer le serveur pour prendre en co mpte les

 changements.

Sous Linux et Unix vous devriez au pire pouvoir le localiser via une recherche avec des outils

 comme locate ou find, exemple :

 find / \( -name httpd.conf -o -name apache.conf -o -name apache2.conf \) -type f 

Comment personnaliser les pages d'erreur ?

Auteurs : julp ,

La directive ErrorDocument vous permet d'associer une page personnalisée à chacune des erreurs. Illustration :

# Erreur d'authentification

ErrorDocument 401 /home/www/online/erreur401.php

# Accès interdit

ErrorDocument 403 http://www.monDomaine.fr/erreur.php?code=403

# Document non trouvé

ErrorDocument 404 "Document introuvable"# Erreur serveur

ErrorDocument 500 /home/www/online/erreur500.html

Ces directives peuvent également être utilisées dans Qu'est-ce qu'un fichier .htaccess ? à condition que la configurationdu serveur le permette : directive AllowOverride à la valeur FileInfo ou All.

lien : Tutoriel : pages d'erreur personnalisées avec Apachelien : Documentation de la directive ErrorDocument

Comment changer l'emplacement par défaut où sont cherchés les fichiers ?

Auteurs : julp ,La directive DocumentRoot dans le fichier de configuration d'Apache indique la racine du serveur Web. Vous pouvezmodifier celle-ci de sorte à utiliser un autre emplacement.

 Prêtez attention aux permissions au niveau des fichiers de cette arborescence : l'u tilisateur

 sous lequel fonctionne Apache doit être capable de parcourir les dossiers (droit x sur systèmes

 de type Unix) et de lire les fichiers qu'ils contiennent (droit r) que l'on souhaite publier.

Sur systèmes Unix/Linux, la commande suivante devrait répondre à cette interrogation :

Page 7: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 7/40

 

FAQ du serveur HTTP Apache

- 7 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

find / \( -name httpd.conf -o -name apache.conf -o -name apache2.conf \) -type f | xargs

grep 'DocumentRoot "' | awk -F'"' '{print $2}'

lien : Où se trouve le fichier de configuration httpd.conf ?

Comment changer le port d'écoute d'Apache ?

Auteurs : julp ,

Pour changer le port d'écoute d'Apache, vous devez modif ier la valeur de la directive Listen dans Où se trouve le fichierde configuration httpd.conf ?. Exemple :

Listen 81

Notes :• Le port standard pour le protocole HTTP est 80 (443 pour HTTPS). S'il est modifié, il faudra clairement le

mentionner dans vos différentes URL. Exemple pour un serveur local fonctionnant sur le port 8080 : http:// localhost:8080/index.php ;

• L'usage d'un port situé dans la plage 1-1024 requiert normalement les droits d'un administrateur système.

Comment accéder à un serveur depuis l'extérieur ?

Auteurs : khayyam90 ,

Certains serveurs sont spécifiquement configurés pour fonctionner en local, en écoutant l'adresse 127.0.0.1 (localhost).Donc pour pouvoir y accéder depuis d'autres ordinateurs, il faut le faire écouter l'adresse de la machine sur le réseau.Il s'agit juste d'une ligne à changer dans le fichier de configuration. Stoppez le serveur, modifiez le fichier httpd.conf (situé dans le répertoire conf_files pour EasyPHP) et changez la ligne :

Listen 127.0.0.1:80

Par :

Listen [IP de la machine]:80

Puis redémarrez le serveur.

 Des environnements tout en un, comme WAMP, intègrent une option de type "Put Online"

qui permet de rendre, ou non, le serveur accessible aux machines extérieures.

Comment faire une redirection ?

Auteurs : julp ,

Pour mettre en place des redirections basiques, c'est-à-dire d'une URL A, qui ne doit plus être utilisée, à une URL B,remplaçant la première ; vous avez à votre disposition plusieurs directives équivalentes. Il faut notamment prendre encompte le type de redirection (temporaire contre permanente) :

• La forme "générale" :

Page 8: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 8/40

 

FAQ du serveur HTTP Apache

- 8 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Redirect (status) URL-path (URL)

Le paramètre status, facultatif, correspond au code HTTP que le serveur renvoie au client. Les valeurs possiblessont :

• permanent (301) : la ressource demandée est déplacée de manière permanente de URL-path. Sa nouvelleadresse est URL ;

• temp (302, valeur par défaut) : le document ciblé par le client, URL-path, est temporairement déplacé àURL ;

• seeother (303) : la ressource demandée a été remplacée ;• gone (410) : le document spécifié fait l'objet d'une suppression définitive. Le paramètre URL, n'a donc pas

raison d'être ;• le code HTTP numérique, directement, à renvoyer. Si celui-ci ne se situe pas dans la tranche des 300,

l'argument URL n'a pas à être fourni.• Une forme abrégée pour une redirection permanente :

RedirectPermanent URL-path URL

Qui est équivalente en tout point à :

Redirect permanent URL-path URL

# Ou encore

Redirect 301 URL-path URL

• Et il en existe une également, sur le même principe, pour les redirections temporaires :

RedirectTemp URL-path URL

Strictement synonyme à :

Redirect temp URL-path URL

# Ou encore

Redirect 302 URL-path URL

L'ensemble de ces directives fonctionnent par rapport au chemin de l'URL, ce qui signifie que la redirection, ainsi miseen place, sera également effective pour les potentielles sous-ressources (typiquement les fichiers d'un répertoire quiferait l'objet d'une redirection).

Seules les versions 2 d'Apache sont capables d'accepter un chemin (débutant par u n slash),

 reprenant alors les noms et protocoles de l'URL d'origine, au niveau de leur dernier paramètre

(l'URL sur laquelle on redirige). Les versions antérieures généreront une erreur interne (500)

 si vous veniez malgré tout à en utiliser une.

La directive RedirectMatch vient compléter les précédentes dans le but d'établir des redirections de masse plus évoluées.En effet, comme pourrait le laisser supposer son préfixe Match, celle-ci est capable de se baser sur des expressions

Page 9: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 9/40

 

FAQ du serveur HTTP Apache

- 9 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

rationnelles pour décider si l'URL courante doit faire l'objet d'une redirection ou non. Son avantage est égalementd'offrir la fonctionnalité de capture, qui permet de réemployer une partie de l'URL d'origine dans celle de redirection.

Un exemple (fictif et incomplet) pour illustrer cette dernière possibilité, soit la redirection suivante :

RedirectMatch permanent ^/(.+)/(.+)\.php$ http://domaine2/$1/$2/

Sa mise en place fait suite à une migration du nom de domaine et accessoirement une réorganisation interne d'un site.En effet, une URL telle que  http://domaine1/a/b.php sera renvoyée sur http://domaine2/a/b/ (on suppose la redirectiondestinée à domaine1 et domaine2 avec une arborescence propre, sinon ils seraient tous deux concernés par cetteredirection et engendreraient une redirection sans fin).

 Le module de réécriture permet également de réaliser des redirections. Il faut, e n ce cas,

 préciser l'option R (ou redirect) au niveau de votre règle RewriteRule. Le code par défaut

 renvoyé sera alors celui d'une redirection temporaire. Vous pouvez indiquer tout autre code

 par son nom symbolique ou valeur numérique (exemple : R=301 ou R=permanent pour une

 redirection à valeur permanente).

Ces directives ne permettent pas de prendre en compte la pa rtie dite "query string" de l'URL

(au sens test ; il faudra, le cas échéant, envisager le module de réécriture). Par contre, ces

 paramètres seront retransmis, tels quels, à l'URL de redirection.

lien : Le complément de la FAQ PHP à ce sujet

lien : Recommandation du W3Clien : Formation au protocole HTTP, par Mathieu Lemoine

lien : Tutoriel .htaccess : Gérer les changements d'URL, par Cédric Chatelain

lien : Tutoriel de réécriture de liens (URL Rewriting), par Guillaume Rossolini

Comment cacher la signature du serveur ?

Auteurs : julp ,

Peut être voyez-vous une information décrivant votre serveur comme celle ci-dessous, située au bas des pages d'erreurou autre listing de répertoire :

 Apache/2.2.11 (Debian) mod_chroot/0.5 Server at localhost Port 80

Et vous souhaitez ne pas l'afficher ? C'est la directive ServerSignature qui, à la valeur On, affiche cette donnée. A Off ,elle ne sera plus du tout visible ou vous pouvez encore la remplacer par l'adresse mail de l'administrateur du serveur(indiquée via une directive ServerAdmin) en précisant la valeur Email .

En complément, depuis les versions 2.0.44, une nouvelle directive a fait son apparition : ServerTokens. Cette dernièrepermet de restreindre quelles données l'on souhaite voir affichées lorsque ServerSignature est à On. Voici, en reprenantmon précédent exemple, ce que l'on obtient pour chacune des valeurs que ServerTokens peut prendre :

Page 10: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 10/40

 

FAQ du serveur HTTP Apache

- 10 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Valeur SortieServerTokens Prod(uctOnly) Apache Server at localhost Port 80

ServerTokens Major Apache/2 Server at localhost Port 80ServerTokens Minor Apache/2.2 Server at localhost Port 80ServerTokens Min(imal) Apache/2.2.11 Server at localhost Port 80ServerTokens OS Apache/2.2.11 (Debian) Server at localhost

Port 80ServerTokens Full(valeur par défaut)

Apache/2.2.11 (Debian) mod_chroot/0.5Server at localhost Port 80

ServerSignature et, surtout, ServerTokens altèrent égaleme nt les informations tran smises à

 PHP lorsqu'il fonctionne comme module.

Une autre solution pourrait être de patcher Apache mais s'avère être une mauvaise idée car

 certains modules, comme Perl, nécessite les informations de version. Sans compter que cela donne, en terme de maintenance, plus de travail.

Pourquoi les variables d'environnement SCRIPT_URI et SCRIPT_URL n'existent pas ?

Auteurs : julp ,

Les variables d'environnement SCRIPT_URI et SCRIPT_URL sont exclusivement gérées par le module de réécriture(mod_rewrite) à condition que la réécriture soit activée au niveau même du serveur. C'est à dire que vous devez avoirRewriteEngine On au niveau du serveur concerné (celui par défaut et/ou un virtualhost).

Par contre, de par cette spécificité au niveau de la configuration et de leur absence de standardisation (norme CGI 1.1), je vous recommande fortement de vous appuyer sur d'autres variables présentes en toute circonstance.

Est-il possible de modifier à la volée une ressource avant l'envoi au client ?

Auteurs : julp ,

Oui, il est possible de réaliser dynamiquement la modification d'une ressource avant l'envoi au client directement avecApache. Il faut pour cela ajouter un filtre en sortie et rediriger, pour traitement, cette même sortie à un module.

Il existe notamment le module substitute, à condition de posséder une version 2.2.7 minimum où celui-ci est activé, pour

effectuer du remplacement de texte (éventuellement par l'intermédiaire d'expressions régulières).

Une possible utilisation pourrait être de réaliser la fonction inverse d'une réécriture d'URL afin de ne pas avoir àmodifier son site. Il faut cependant bien être conscient, qu'à traiter une page comme un vulgaire texte et avec de multiplesopérations de remplacements, nous sommes susceptibles d'introduire des remplacements indésirés.

C'est toutefois l'exemple que je vous propose par le .htaccess suivant (on supposera le module substitute chargé/activé) :

<IfModule mod_rewrite.c>

  <IfModule mod_substitute.c>

   AddOutputFilterByType SUBSTITUTE text/html

Substitute s~(?:index\.php)?\?page=([[:lower:]]+)~$1~

Substitute s~article\.php\?id=(\d+)~article-$1~

Page 11: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 11/40

 

FAQ du serveur HTTP Apache

- 11 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

  </IfModule>

  Options +FollowSymLinks

  <IfModule mod_negotiation.c>

  Options - MultiViews

  </IfModule>

  RewriteEngine On

  RewriteBase /

  RewriteRule ^([[:lower:]]+)$ index.php?page=$1 [L]

  RewriteRule ^article-(\d+)$ article.php?id=$1 [L]

</IfModule>

Ainsi, nos liens de la forme (index.php)?page=X seront dynamiquement réécrits en X et article.php?id=Y en article-Ypar le module substitute. Et le module de réécriture se chargera de les faire aboutir, en interne, sur l'URL originale.

Nous avons donc mis en place des liens "propres" sans avoir modifié le moindre script/page du site.

lien : Documentation du module substitute

Page 12: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 12/40

 

FAQ du serveur HTTP Apache

- 12 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Configuration générale > Les fichiers htaccess

Qu'est-ce qu'un fichier .htaccess ?Auteurs : mathieu ,

Il s'agit d'un fichier à mettre dans le répertoire qui est accessible sur internet et qui permet de modifier sa configuration.Il est possible de faire les modifications suivantes :

• Comment faire pour ne pas lister les fichiers d'un répertoire sans fichier d'index ?• Comment mettre en place une authentification simple des utilisateurs ?• Réécriture d'adresse (appelée aussi URL Rewriting)• Comment personnaliser les pages d'erreur ?• ...

Sous Windows, vous ne pouvez pas créer de fichier comme nçant par un point don c appelez

le "htaccess.txt" par exemple, transférez le sur le serveur et renommez le en ".htaccess" sur

le serveur.

lien : Tutoriel : Les principales utilisations du htaccess avec Apache

Pourquoi mon fichier .htaccess n'est pas pris en compte ?

Auteurs : julp ,

Ce sont des directives AllowOverride, renseignées par l'administrateur dans le f ichier de configuration d'Apache, quidéfinissent quelles sont celles que l'on peut ou non placer dans un fichier .htaccess afin de limiter l'usage de ces derniers.Toute directive d'un fichier .htaccess non autorisée par l'administrateur sera alors ignorée (non traitée) par le serveur.

Sa ou ses valeurs possibles (car cumulables) sont :

• AuthConfig : pour tout ce qui est lié à l'authentification ;• FileInfo : concerne les contrôles de type de document ainsi que tout ce qui touche les entêtes HTTP. Citons,

pour exemples connus, la réécriture et la gestion des erreurs (ErrorDocument) ;• Indexes : relatif à l'indexation des répertoires (tel DirectoryIndex) ;• Limit : permet la mise en place de contrôle d'accès sur l'adresse du client (trio Order, Allow, Deny);• Options : rend possible la redéfinition de la directive du même nom.

Les valeurs particulières tout ou rien complètent la liste précédente :

• All : le fichier .htaccess ne fait l'objet d'aucune restriction ;

• None : tout fichier .htaccess ne sera même pas lu.

Cependant, ayant jusque là volontairement laissé de côté le contexte d'application de la directive AllowOverride,l'explication a été quelque peu simplifiée. Corrigeons à présent le tir. En effet, il faut savoir qu'elle se définit par rapportà un(des) répertoire(s) (donc à des blocs <Directory>...</Directory>) et qu'en son absence, le répertoire héritera des"permissions" de son parent, qui lui-même peut les tenir de son propre père.

Illustration : soit l'arborescence, schématique (voir explications plus bas), représentée ci-dessous :

 

/

DocumentRootforum 

Page 13: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 13/40

 

FAQ du serveur HTTP Apache

- 13 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Le répertoire / représente la racine de votre système de fichiers (même sous Windows, considérez cela commecorrespondant à votre Poste de travail). Etant le père de tout répertoire, c'est ici qu'il convient de définir votre politique,

restrictive, par défaut afin d'ignorer les fichiers .htaccess hors partie web :

<Directory />

   AllowOverride  None

  # ...

</Directory>

Quant au répertoire correspondant à votre DocumentRoot, il vous permettra de spécifier un comportement plus ouvertappliqué par défaut sur l'ensemble de la partie que votre serveur publie. Ci-bas, un exemple autorisant, par défaut, auxusagers uniquement les contrôles d'accès, l'identification et l'indexation des répertoires :

<Directory DocumentRoot> # Remplacer DocumentRoot par sa valeur

   AllowOverride AuthConfig Indexes Limit

  # ...

</Directory>

Enfin, dans la continuité de notre cas de figure, pour les besoins du forum en réécriture, nous ajoutons spécifiquementle droit FileInfo à cet endroit. Ce qui nous donne donc :

<Directory DocumentRoot/forum> # Remplacer DocumentRoot par sa valeur

   AllowOverride AuthConfig FileInfo Indexes Limit

</Directory>

Toutes les directives ne sont pas utilisables dans un fic  hier .htaccess pour de  s raisons

  techniques notamment, de sécurité ou de performance. Vous pourrez trouver le détail de

 chacune d'elle dans la documentation d'Apache (à la ligne Context).

Chaque directive est rattachée à un module. Si ce module n'e st pas disponible sur votr e serveur

 alors une erreur 500 (Internal Error) sera (aussi) déclenchée étant donné qu'elle ne sera pas

 reconnue.

Comment mettre en place une authentification simple des utilisateurs ?Auteurs : julp ,

Commencez par créer un fichier .htaccess indiquant qu'une authentification sera requise :

 AuthUserFile "/chemin/complet/vers/le/fichier/.htpasswd"

 AuthName Authentification

 AuthType Basic

Require valid-user

Générer ensuite le fichier contenant la liste des couples login/mot de passe à l'aide de l'utilitaire htpasswd :

# Pour la première personne

Page 14: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 14/40

 

FAQ du serveur HTTP Apache

- 14 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

htpasswd -cs .htpasswd login1

# Pour les personnes suivantes

htpasswd -s .htpasswd login2

L'option c crée le fichier. Elle ne doit être utilisée qu'à la création du premier compte sinon vous écraseriez le fichier.L'option s spécifie que les mots de passe seront stockés sous forme hachée avec l'algorithme appelé SHA1. Vous pouvezremplacer celle-ci par m pour utiliser l'algorithme MD5, d pour CRYPT ou p pour que ceux-ci apparaissent en clair.

Ces directives d'un fichier .htaccess ne sont effectives que  si le répertoire concerné dispose

 de la valeur AuthConfig ou All pour sa sous-directive AllowOverride.

  Le fichier faisant office de "base de données" des identifiants se nomme par

 convention .htpasswd et n'est par défaut pas lisible par un quelconque utilisateur au même

 titre qu'un fichier .htaccess.

 L'hébergeur gratuit Free.fr est bien plus exigeant. Reportez-vous à Comment mettre en placeune authentification chez Free ? de sorte à prendre connaissance de ses particularités.

lien : Tutoriel : Les principales utilisations du htaccess avec Apache

Peut-on utiliser un chemin relatif pour le fichier .htpasswd ?

Auteurs : julp ,

Oui mais le chemin indiqué à la directive AuthUserFile sera relatif non pas par rapport au répertoire contenant lefichier .htaccess mais sera toujours lié à la racine du serveur (déterminée par la valeur de la directive ServerRoot).

Comment faire pour ne pas lister les fichiers d'un répertoire sans fichier d'index ?

Auteurs : mathieu ,

Il suffit de mettre le code suivant dans Qu'est-ce qu'un fichier .htaccess ? dans le répertoire à protéger :

Options -Indexes

De cette façon le listage de tous les sous-répertoires sera aussi interdit.

Cette directive peut aussi se placer dans un bloc "Directory" dans le fichier de configuration du serveur.

Comment interdire l'accès aux fichiers inc ou xml ?

Auteurs : julp ,

Pour interdire l'accès à l'ensemble des fichiers portant une extension inc ou xml nous aurons besoin de recourir auxexpressions régulières :

<FilesMatch "\.(inc|xml)$">

  Order allow,deny

  Deny from  all  Satisfy  All

</FilesMatch>

Page 15: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 15/40

 

FAQ du serveur HTTP Apache

- 15 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Le point est échappé (précédé d'un antislash) car en temps normal il correspond à n'importe quel caractère. La barreverticale suggère une alternative (inc ou xml) et enfin le dollar signifie la fin du nom du fichier.

Cette directive ne sera effective uniquement si le répertoire, éventuellement par héritage, contenant ce fichier htaccessle permet via la directive AllowOverride qui doit au minimum posséder la valeur Limit.

Comment exclure des pages particulières de l'authentification

à laquelle elles seraient, en temps normal, soumises ?

Auteurs : julp ,

Une version 2.0.51 est au minimum requise ici !

La solution consiste alors en la combinaison de trois éléments :

• Distinguer la partie soumise à l'authentification de celle qui ne l'est pas. Pour ce faire, on utilisera les directives<Files> ou <FilesMatch> pour séparer les exceptions ;

• Autoriser le client, pour ces ressources, à y avoir accès grâce à une règle Allow from all ;

• Se pose maintenant le problème suivant : lorsqu'une partie d'un site est soumise à la fois à des politiques d'accès(via des règles Allow et Deny) et à une authentification (Require), le comportement par défaut vis à vis du clientest tel qu'il doit remplir ces deux conditions.

Il est donc nécessaire à ce stade d'indiquer à Apache qu'une seule des conditions suffit à donner accès au documentdemandé. Ceci se gère via la directive Satisfy, dont les valeurs sont :

• All (par défaut) : le client doit satisfaire les politiques d'accès et l'authentification HTTP ;• Any : une seule des deux suffit.

On choisira donc la dernière de sorte à ce que notre règle visant à autoriser tout le monde (Allow from all) prévalesur l'identification.

Pour illustrer, voici le fichier .htaccess à écrire pour que l'authentification HTTP s'applique à toutes les pagessauf à notre index :

<Files index.php>  Satisfy Any

   Allow from  all

</Files>

 AuthUserFile /.../.htpasswd

 AuthName Authentification

 AuthType Basic

Page 16: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 16/40

 

FAQ du serveur HTTP Apache

- 16 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Require valid-user

Comment interdire l'accès direct à mes images depuis

un site extérieur (aka direct linking ou hotlinking) ?

Auteurs : julp ,

Pour interdire l'accès aux images, par exemple, que l'on héberge depuis un site extérieur, on se base sur l'origine duclient, qu'il indique par l'entête appelée HTTP_REFERER :

• A l'aide de la réécriture d'URL :

<IfModule mod_rewrite.c>  RewriteEngine On

  RewriteCond %{HTTP_REFERER} !^$

  RewriteCond %{HTTP_REFERER} !^http://.*\.nom_de_domaine\.fr/ [NC]

  RewriteRule \.(gif|jpe?g|png)$ - [F,NC] # Vous pouvez remplacer F par R=403

</IfModule>

• En combinant les directives SetEnvIfNoCase et FilesMatch :

SetEnvIfNoCase Referer "^https?://([^/]*)?nom_de_domaine\.fr/" local_ref=1

SetEnvIf Referer ^$ local_ref=1

 

<FilesMatch "\.(jpe?g|gif|png)$">

  Order allow,deny   Allow from env=local_ref

</FilesMatch>

Ces moyens, basés sur le référant, n'ont absolument rien d e fiable, puisque cet en tête peut

être omis voir faussé par le client.

Page 17: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 17/40

 

FAQ du serveur HTTP Apache

- 17 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Configuration générale > HTTPS

Comment savoir si la ressource a été demandée en HTTP ou en HTTPS ?Auteurs : julp ,

Apache crée automatiquement une variable d'environnement interne nommée HTTPS et lui assigne la valeur on lorsquela ressource est demandée par l'intermédiaire du protocole sécurisé HTTPS. En HTTP normal, elle n'existera pas maispour un comportement portable il est recommandé de tester à la fois sa présence puis sa valeur afin de pouvoir ledéterminer précisément (sous IIS, elle sera définie mais de valeur off).

Vous pouvez donc regarder cette variable aussi bien dans un programme CGI que dans un script (PHP) ou encore lorsd'une réécriture (voir Comment rendre certains documents accessibles uniquement par le protocole HTTPS ? pourdes exemples).

 Ne testez surtout pas les ports pour déterminer si vous êtes ou non en HTTPS : ce n'est en

 rien fiable contrairement à ce qui est dit ci-dessus ! On peut très bien configurer un serveur

 pour utiliser d'autres ports que les ports standards (bien que le client doivent les expliciter).

 Il est tout à fait possible de faire de l'HTTP sur le port 443 et de l'HTTPS sur le port 80.

Comment rendre certains documents accessibles uniquement par le protocole HTTPS ?

Auteurs : julp ,

Il est possible de réaliser la redirection de ressources particulières en vue de forcer, pour celles-ci, l'usage du protocolesécurisé (HTTPS). Pour ce faire, il est possible d'agir à plusieurs niveaux :

• Indiquer les redirections (directives Redirect*) directement depuis la déclaration du virtualhost HTTPcorrespondant (méthode à privilégier). Exemple :

<VirtualHost ...:80>

  # ...

  RedirectPermanent page_securisee.html https://www.monserveur.fr/page_securisee.html

</VirtualHost>

• Depuis un fichier .htaccess et à l'aide du module de réécriture :

RewriteEngine OnRewriteCond %{HTTPS} !=on

RewriteRule secure[/_].* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

• Que l'on peut aussi, éventuellement, implémenter en PHP :

<?php

if (!isset($_SERVER ['HTTPS']) || $_SERVER ['HTTPS'] != 'on') {

  header('Location: https://' . $_SERVER ['SERVER_NAME'] . $_SERVER ['REQUEST_URI']);

  exit;

Page 18: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 18/40

 

FAQ du serveur HTTP Apache

- 18 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

}

Peut-on avoir plusieurs hôtes virtuels HTTPS nommés pour une même adresse IP ?

Auteurs : julp ,

A l'origine, et jusqu'à peu en ce qui concerne le module standard ssl, il n'était pas possible, de par la conception mêmedu protocole SSL, d'avoir plusieurs hôtes virtuels pour une même adresse IP. Pourquoi ? Il s'agit tout simplement duparadoxe de l'oeuf et de la poule : le protocole SSL encapsule HTTP et implique, au préalable, une négociation entre leclient et le serveur sur la façon dont ils vont ensuite communiquer de manière sécurisée. L'entête HTTP déterminant levirtualhost (Host) ne peut donc être lue à ce moment, le serveur doit, avant cela, convenir des paramètres de connexionHTTPS selon sa propre configuration et fournir son certificat. C'est ensuite, donc trop tard, que l'entête Host est lue.Apache n'a donc d'autre choix, dans un tel cas de figure, que de s'en remettre à un virtualhost par défaut (le premierde la liste).

Voici une caricature de la négociation :

 _ client : (négociation TLS) Salut, je supporte telle et telle méthodes de chiffrement.

 _ serveur : (négociation TLS) Bonjour, voici mon certificat public, nous allons utiliser tel

algorithme de chiffrement.

 _ client : (négociation TLS) ça me semble bon.

 _ client : (chiffré) requête HTTP

 _ serveur : (chiffré) réponse HTTP

Aujourd'hui, les versions récentes d'Apache (>= 2.2.12) et OpenSSL (>= 0.9.8j) (à moins d'avoir été patchés et/ou

compilés à la main) implémente une solution qu'est l'extension appelée Server Name Indication (d'acronyme SNI, RFC4366) du protocole SSL. Elle permet alors au client d'indiquer dès le départ, lors de la négociation SSL, le nom dedomaine désiré. Le serveur est alors capable d'associer à la requête le bon hôte virtuel.

Illustration des échanges client/serveur avec SNI :

 _ client : (négociation TLS) Salut, je supporte telle et telle méthodes de chiffrement, et je

cherche à me connecter à 'www.exemple.fr'.

 _ serveur : (négociation TLS) Bonjour, voici mon certificat public, nous allons utiliser tel

algorithme de chiffrement.

 _ client : (négociation TLS) ça me semble bon.

 _ client : (chiffré) requête HTTP

 _ serveur : (chiffré) réponse HTTP

Mais encore faut-il que le client supporte cette extension. A défaut, soit il sera dirigé sur le virtualhost par défaut (lorsqueSSLStrictSNIVHostCheck est à off - comportement par défaut) soit il verra sa requête refusée (erreur 403 avec unmessage d'erreur indiquant son incapacité à prendre en charge SNI) lorsque SSLStrictSNIVHostCheck est à on.

Comment déterminer simplement si SNI est actif ?

Auteurs : julp ,

Si vous disposez déjà d'un hôte virtuel en HTTPS, vous pouvez contrôler le support de SNI via cet espace. En

effet, le module SSL créera automatiquement, s'il est actif, une variable d'environnement interne à Apache appeléeSSL_TLS_SNI, prenant pour valeur le nom de votre virtual host.

Page 19: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 19/40

 

FAQ du serveur HTTP Apache

- 19 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Comme pour la variable HTTPS, vue plus haut, vous indiquant ou non si la ressource a été appelée par le protocolesécurisé, il vous sera facile de l'exploiter via le module de réécriture, un programme CGI, en PHP, etc.

Un code PHP pour effectuer cette vérification :

<?php

if (isset($_SERVER ['HTTPS']) && strtolower($_SERVER ['HTTPS']) == 'on') {

if (isset($_SERVER ['SSL_TLS_SNI']) /*&& $_SERVER['SSL_TLS_SNI'] == $_SERVER['HTTP_HOST']*/) {

  echo "SNI est supporté par ce serveur";

  } else {

  echo "SNI n'est pas supporté sur ce serveur";

  }

} else {

  die("Ce script doit être exécuté en HTTPS.");

}

Page 20: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 20/40

 

FAQ du serveur HTTP Apache

- 20 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Environnement

Comment démarrer apache au lancement de la machine ?Auteurs : julp ,

Cette étape dépend fortement de votre système et souvent de la version utilisée d'Apache :

• Windows :

• Apache 1.3.X : apache -k install• Apache 2.X.Y : httpd -k install

• Linux et Unix : reportez-vous à la documentation de votre système. A titre d'exemple pour les distributions lesplus courantes, en admettant que le script placé dans /etc/init.d/ s'appelle apache2 :

• Debian : update-rc.d apache2 default• Fedora, Mandriva et autres distributions à base de RPM : chkconfig --add apache2• Gentoo : rc-update add apache2 default

Comment est organisée la configuration d'Apache 2 sur Debian ?

Auteurs : julp ,

La configuration d'Apache sur Debian, qui peut sembler atypique au premier abord, est conçue pour être plus facileà maintenir et plus organisée. Ce souhait repose sur la possibilité de disloquer la configuration en de multiples fichiersqui sont ensuite chargés par l'intermédiaire de la directive Include.

Vous pourriez vous en tenir à l'édition du fichier apache2.conf mais il serait plus sage de suivre la démarche prévue.Vous allez en comprendre tout l'intérêt par la présentation de différents cas de figure :

• Les modules : le modèle Debian veut que la configuration relative à un module soit séparée en deux fichiersdistincts dans le répertoire mods-available :

• Le premier nom_du_module.load, est destiné au chargement uniquement du module. Vous ne trouverezdonc dans un tel fichier qu'une directive LoadModule généralement.

• Eventuellement, un second fichier nom_module.conf où seront placées toutes les directives deconfiguration qui lui sont propres (ne pas oublier de placer celles-ci dans un bloc <IfModule> et </ IfModule>).

Le module ajouté ne sera en l'état que seulement configuré. Il est ensuite nécessaire de l'activer en vue de bénéficierde ses fonctionnalités. Pour cela il faut créer des liens symboliques des fichiers situés dans le répertoire  /etc/ 

 apache2/mods-available/ et correspondants au module voulu vers le répertoire  /etc/apache2/mods-enabled/ . Lacommande a2enmod, qui prend en paramètre le nom du module à activer, créera pour vous ces liens. De même,son pendant, a2dismod, vous permettra de désactiver, par suppression des liens symboliques, tout module.

Ceci vous permet donc de gérer aisément vos modules : vous pouvez ainsi les activer et désactiver à volonté sansperdre ni éditer la configuration qui leur est associée.

• Les sites (VirtualHost) : ils fonctionnent exactement de la même manière que les modules. Ils sont à définir dansle répertoire sites-available à raison d'un par fichier.

Page 21: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 21/40

 

FAQ du serveur HTTP Apache

- 21 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Ils seront eux aussi activés ou désactivés par la création de liens symboliques dans le répertoire  /etc/apache2/ 

 sites-enabled/ . Les commandes a2ensite et a2dissite, attendant en paramètre le nom du site, vous permettront

respectivement d'activer et de désactiver tout site.

 Le fichier default est dédié au site principal (VirtualH  ost par défaut).

• Les ports d'écoute du serveur sont définis à part, par l'intermédiaire du fichier /etc/apache2/ports.conf . A modifierdirectement si besoin.

• Vos configurations personnelles sont, autant que possible, et dans la mesure où elles sont indépendantes, à déposerdans le répertoire /etc/apache2/conf.d/ . Le serveur se chargera d'inclure l'ensemble des fichiers présents dans cerépertoire.

Page 22: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 22/40

 

FAQ du serveur HTTP Apache

- 22 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Modules

Où trouver une liste des modules existants ?Auteurs : julp ,

Le site officiel d'Apache recense un grand nombre de modules. Elle n'est pas exhaustive ni à jour mais elle s'avère êtreun bon point de départ.

La plupart des distributions Linux ou systèmes Unix incluent une fonction de recherche parmi les paquets, les modulesApache suivant généralement un même modèle de nommage, il en devient aisé d'obtenir une liste de ceux que vouspropose, de base, votre système.

Que choisir entre une compilation statique et dynamique d'un module ?

Auteurs : julp ,

Pour faire votre choix, exposons les points forts et les faiblesses de la forme dynamique par rapport à la forme statique :

Avantages d'un module dynamique :• Le module peut être activé et désactivé à souhait via la directive LoadModule.• Les fonctions du serveur peuvent être étendues facilement : aucune recompilation du serveur lui-même n'est

nécessaire, l'installation du module et son chargement suffisent.• La possession de l'ensemble des sources d'Apache n'est pas nécessaire.

Inconvénients d'un module dynamique :• Performances légèrement détériorées au démarrage du serveur puisque les modules doivent être chargés et à

l'exécution lors de l'appel des fonctions dynamiques.• Quelques plateformes ne prennent pas en charge les objets dynamiques partagés ou ont un fonctionnement

différent à leur égard.

Page 23: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 23/40

 

FAQ du serveur HTTP Apache

- 23 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Modules > PHP

Comment faire pour que mes scripts PHP soient interprétés ?Auteurs : julp ,

1 PHP, s'il se présente sous la forme d'un module compilé sous forme dynamique par rapport à Apache doitêtre chargé par ce dernier à son démarrage. Vous devez par conséquent disposer d'une ligne LoadModule etéventuellement AddModule pour les anciennes versions d'Apache (branches 1.2 à 1.3 incluses) :

# A la suite des autres directives LoadModule :

LoadModule php5_module "libexec/apache13/libphp5.so"

# Apache 1.2 à 1.3 uniquement, à la suite des autres :

 AddModule mod_php5.c

2 Faire en sorte que les fichiers portant des extensions précises soient traités par l'interpréteur PHP. Pour cela,il faut les associer au type MIME prédéfini et prévu à cette fin :  application/x-httpd-php, à l'aide de la directiveAddType. Ce qui donne :

 AddType application/x-httpd-php .php .php3 .inc

Comment changer localement les paramètres par défaut de PHP ?

Auteurs : julp ,

Lorsque PHP est compilé en tant que module Apache, vous avez à votre disposition deux directives pour modifier laconfiguration de PHP :

• php_flag, réservée aux valeurs de type booléenne (On/Off)• php_value pour tous les autres types de valeur (entières, comme chaînes).

Tous les paramètres de configuration de PHP ne peuvent être modifiés par un fichier htaccess, seuls ceux possédant lavaleur PHP_INI_PERDIR ou PHP_INI_ALL dans la documentation de PHP peuvent y être redéfinis.

De plus, les administrateurs doivent vous le permettre car cela n'est possible que si le répertoire ciblé possède la valeurOptions (ou All) pour sa directive AllowOverride. Notez que vous ne pourrez pas outrepasser les valeurs définies dans

Où se trouve le fichier de configuration httpd.conf ? d'Apache au moyen de php_admin_value et php_admin_flag.

Exemple :

 php_value upload_max_filesize 4M 

 php_flag magic_quotes_gpc Off

Comment changer localement les paramètres de PHP lorsqu'il est utilisé en CGI ?

Auteurs : julp ,

Du fait que PHP n'est plus utilisé comme module, les directives php_flag et php_value ne seront pas reconnues (etconduiraient à une erreur 500). Il est cependant possible de retrouver cette possibilité mais cette charge reviendra à

Page 24: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 24/40

 

FAQ du serveur HTTP Apache

- 24 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

PHP lui-même et non plus au serveur. Il devient donc nécessaire, à cette fin, d'installer l'extension PECL nomméehtscanner pour prendre le relais.

Installation :

• Sur systèmes de type Unix : si vous avez employé les paquets mis à votre disposition par votre système pourinstaller PHP, il serait préférable de vérifier que cette extension n'y est pas proposée.

Dans le cas contraire, il sera nécessaire de s'orienter vers une compilation de l'extension à partir des sources :

• Pour une compilation dynamique de l'extension vis-à-vis de PHP, ne requérant ainsi pas la (re)compilationintégrale de PHP :

cd ~

wget http://pecl.php.net/get/htscanner -O htscanner.tgz

tar xzf htscanner.tgz

cd htscanner-<version>

 phpize

./configure

 make

 make install

Editer maintenant votre fichier php.ini de sorte à ajouter cette nouvelle extension à votre environnement :

extension=htscanner.so• Pour une compilation statique de cette extension, il sera nécessaire de recompiler PHP :

cd ~

wget http://pecl.php.net/get/htscanner -O htscanner.tgz

tar xzf htscanner.tgz -C <répertoire vers les sources de PHP>/ext/

 mv <répertoire vers les sources de PHP>/ext/htscanner-<version> <répertoire vers

les sources de PHP>/ext/htscanner

cd <répertoire vers les sources de PHP>

./buildconf --force

./configure --enable-htscanner <toutes vos autres options ici>

 make

 make install

• Sur Windows : téléchargez l'archive intitulée PECL <version PHP> Win32 binaries depuis le site de PHP. Extrayez-en l'extension htscanner (fichier php_htscanner.dll) vers le répertoire de votre installation de PHP contenant lesautres extensions (probablement ext). Chargez-la en éditant votre fichier php.ini de sorte à ajouter la ligne ci-dessous :

extension=php_htscanner.dll

Configuration et utilisation : l'extension htscanner peut se configurer sur quelques points depuis le fichier deconfiguration de PHP ( php.ini) :

Page 25: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 25/40

 

FAQ du serveur HTTP Apache

- 25 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Nom du paramètre Valeur par défaut Descriptionhtscanner.config_file .htaccess Nom du fichier de

configuration recherché.htscanner.default_docroot / Indique la racine web. Lavaleur est utilisée s'il n'estpas possible de la déterminersur les informations fourniespar le serveur.

htscanner.default_ttl 300 Durée de vie (en secondes)des paramètres lors de leurmise en cache.

htscanner.stop_on_error 0 Détermine si toute erreurdoit être fatale (valeur 1) ounon (valeur 0).

Vous pouvez désormais de nouveau utiliser les directives php_flag et php_value à la différence près qu'il faut les placerdans un bloc <IfModule> afin qu'elles ne soient pas interprétées par Apache et qu'elles ne génèrent pas une erreur 500du fait qu'elles ne sont pas traitées par lui-même. Démonstration :

<IfModule mod_php5.c>

php_flag magic_quotes_gpc Off

</IfModule>

Si l'emploi des blocs <IfModule> représente un problème, vous pouvez créer un module Apache de façon à les intercepter

sans les traiter ainsi elles ne seraient plus source d'une erreur 500. Suivant votre version d'Apache, la source à utiliservarie quelque peu :

• Versions 1.X :

/**

* 1. Compiler (en tant que module dynamique) : apxs -i -a -c mod_dummy_php.c

* 2. Redémarrer Apache

**/

#include "httpd.h"

#include "http_config.h"

#ifndef WITHOUT_ADMIN_CMDS

# include "http_log.h"

#endif /* WITHOUT_ADMIN_CMDS */ 

#ifndef WITHOUT_ADMIN_CMDS

static const char * php_dummy_admin_handler(cmd_parms *cmd, void *dummy, const char *name, const char

{

ap_log_error(APLOG_MARK, LOG_NOTICE,

cmd->server, "dummy php: admin command '%s' ignored (value: '%s')", name, value);

return NULL;

}

#endif /* WITHOUT_ADMIN_CMDS */ 

static const char * php_dummy_handler(cmd_parms *cmd, void *dummy, const char *name, const char *value

{

return NULL;}

Page 26: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 26/40

 

FAQ du serveur HTTP Apache

- 26 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

static const command_rec dummy_php_cmds[] =

{

#ifndef WITHOUT_ADMIN_CMDS

  {"php_admin_value", php_dummy_admin_handler, NULL, ACCESS_CONF|RSRC_CONF,TAKE2, "Dummy PHP Value Modifier (Admin)"},

  {"php_admin_flag", php_dummy_admin_handler, NULL, ACCESS_CONF|RSRC_CONF,

TAKE2, "Dummy PHP Flag Modifier (Admin)"},

#endif /* WITHOUT_ADMIN_CMDS */ 

  {"php_flag", php_dummy_handler, NULL, OR_OPTIONS, TAKE2, "Dummy PHP Flag Modifier"},

  {"php_value", php_dummy_handler, NULL, OR_OPTIONS, TAKE2, "Dummy PHP Value Modifier"},

  {  NULL }

};

 module MODULE_VAR_EXPORT dummy_php_module =

{

STANDARD_MODULE_STUFF,

   NULL, /* initializer */ 

   NULL, /* per-directory config creator */ 

   NULL, /* dir merger */ 

   NULL, /* per-server config creator */ 

   NULL, /* merge server config */ 

dummy_php_cmds, /* command table */ 

   NULL, /* handlers */ 

   NULL, /* filename translation */ 

   NULL, /* check_user_id */ 

   NULL, /* check auth */ 

   NULL, /* check access */ 

   NULL, /* type_checker */ 

   NULL, /* fixups */ 

   NULL, /* logger */ 

   NULL, /* header parser */ 

   NULL, /* child_init */ 

   NULL, /* child_exit */ 

   NULL  /* post read-request */ 

};

• Versions 2.X :

/**

* 1. Compiler (en tant que module dynamique) : apxs(2) -i -a -c mod_dummy_php.c

* 2. Redémarrer Apache

**/

#include "ap_config.h"

#include "httpd.h"

#include "http_config.h"

#ifndef WITHOUT_ADMIN_CMDS

# include "http_log.h"#endif /* WITHOUT_ADMIN_CMDS */ 

 module AP_MODULE_DECLARE_DATA dummy_php_module;

#ifndef WITHOUT_ADMIN_CMDS

static const char * php_dummy_admin_handler(cmd_parms *cmd, void *dummy, const char *name, const char

{

ap_log_error(APLOG_MARK, LOG_NOTICE, 0,

cmd->server, "dummy php: admin command '%s' ignored (value: '%s')", name, value);

return NULL;

}

#endif /* WITHOUT_ADMIN_CMDS */ 

static const char * php_dummy_handler(cmd_parms *cmd, void *dummy, const char *name, const char *value

{

return NULL;}

Page 27: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 27/40

 

FAQ du serveur HTTP Apache

- 27 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

static const command_rec dummy_php_cmds[] =

{

#ifndef WITHOUT_ADMIN_CMDS

AP_INIT_TAKE2("php_admin_value", php_dummy_admin_handler, NULL,ACCESS_CONF|RSRC_CONF, "Dummy PHP Value Modifier (Admin)"),

AP_INIT_TAKE2("php_admin_flag", php_dummy_admin_handler, NULL,

ACCESS_CONF|RSRC_CONF, "Dummy PHP Flag Modifier (Admin)"),

#endif /* WITHOUT_ADMIN_CMDS */ 

AP_INIT_TAKE2("php_flag", php_dummy_handler, NULL,

OR_OPTIONS, "Dummy PHP Flag Modifier"),

AP_INIT_TAKE2("php_value", php_dummy_handler, NULL,

OR_OPTIONS, "Dummy PHP Value Modifier"),

  {  NULL }

};

 module AP_MODULE_DECLARE_DATA dummy_php_module = {

STANDARD20_MODULE_STUFF,

   NULL, /* create per-directory config structure */ 

   NULL, /* merge per-directory config structures */ 

   NULL, /* create per-server config structure */ 

   NULL, /* merge per-server config structures */ 

dummy_php_cmds, /* command apr_table_t */ 

   NULL  /* register hooks */ 

};

Depuis la version 5.3.0, PHP offre nativement, en CGI, deux options supplémentaires :

• Les fichiers .user.ini (nom par défaut qui peut être modifié par la directive php.ini : user_ini.filename) quis'utilisent sur le même principe que les fichiers .htaccess afin de redéfinir localement certains paramètres PHP. Iln'est ainsi possible de modifier que ceux qui sont prévus pour l'être (définis par la constante PHP_INI_PERDIRet PHP_INI_USER - ce qui correspond, à quelques détails près, à ce qu'il est possible de faire avec unfichier .htaccess). L'implémentation est inspirée des fichiers .htaccess mais utilisent la syntaxe des fichiers ini :vous ne pouvez pas y placer autre chose que des paramètres PHP (ils seraient ignorés voir, plus grave, généreraientdes erreurs).

Le fonctionnement est tiré des fichiers .htaccess à savoir que PHP va chercher un fichier .user.ini dans le répertoirecourant du script appelé. S'il n'en trouve pas, il va tenter de remonter jusqu'à la racine du site (DocumentRoot) jusqu'à en trouver un.

Si l'activation de cette fonctionnalité est problématique (performances ou effets de bord dans un environnementmutualisé notamment), elle peut être désactivée en donnant une valeur vide à la directive PHP user_ini.filename.

Les données de ces fichiers .user.ini sont mises en cache pour une durée de 300 secondes (5 minutes) par défaut.

Cette valeur peut être augmentée ou réduite en jouant sur la directive user_ini.cache_ttl de votre fichier php.ini.• Deux types de section spéciale ont été prévus au fichier php.ini système : [HOST= domaine] et [PATH= chemin].Elles permettent respectivement d'assigner, depuis le fichier php.ini système, des paramètres propres à un siteou à un répertoire.

Exemples :

• Définir un include_path propre au site sousdomaine.domaine.fr :

; global - inclusion à partir du répertoire courant uniquement

include_path = "."

[HOST=sousdomaine.domaine.fr]

include_path = ".:/usr/lib/php/PEAR/"

Page 28: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 28/40

 

FAQ du serveur HTTP Apache

- 28 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

• Appliquer un open_basedir aux scripts du répertoire C:/AMP/www/  soussite1/ (sa propre arborescence estégalement affectée) :

; global - aucune restriction

open_basedir =

[PATH=C:/AMP/www/soussite1/]

open_basedir = "C:/AMP/www/soussite1/"

suPHP dipose d'une directive, suPHP_ConfigPath, qui vous permet, dans un fichier .htaccess, à condition quel'administrateur l'autorise (AllowOverride de valeur minimale Options), d'indiquer l'emplacement d'un fichier php.inialternatif global à employer pour l'utilisation des scripts.

Page 29: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 29/40

 

FAQ du serveur HTTP Apache

- 29 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Modules > La réécriture d'URL (URL Rewriting)

Comment créer une arborescence virtuelle ?Auteurs : Yogui ,

Une première idée pourrait nous pousser à utiliser le fichier .htaccess pour rediriger l'internaute à l'aide d'une page 404de notre choix (la page par défaut pour les URIs non valides). Ce script peut récupérer l'adresse que notre internaute ademandée et utiliser un tableau ou une base de données pour déterminer la véritable page à charger. Cependant, cetteapproche est incorrecte car Apache envoie une erreur HTTP 404 au navigateur, ce qui empêche le référencement correctde la page Web. Par conséquent, aucune page de votre site ne serait référencée par les moteurs de recherche. La véritablesolution implique la réécriture de liens. Il faut pouvoir activer la directive "RewriteEngine" de votre fichier .htaccessde manière à y inclure cette première ligne :

RewriteEngine on

À partir de là, vous pouvez utiliser la directive RewriteRule dans ce même fichier, conjointement à des expressionsrégulières. Imaginons par exemple un site fondé sur des articles, sur le principe de : articles.php?article=X (où X estl'identifiant numérique entier de l'article).Nous aurions une série d'articles de la sorte : articles.php?article=1, articles.php?article=43, articles.php?article=99,etc.Nous désirons utiliser une arborescence virtuelle au lieu de ces paramètres barbares. Nous aimerions quelque chosecomme : articles/titre/X/ Voici comment nous pouvons nous y prendre : il suffit d'afficher les liens de la manièresouhaitée dans le HTML et, dans le .htaccess, d'ajouter cette ligne :

RewriteRule articles/.*/([0-9]+)$ /articles.php?article=$1 [L]

C'est une solution assez complexe, mais elle est détaillée dans le tutoriel de réécriture de liens (URL Rewriting)

lien : Tutoriel de réécriture de liens (URL Rewriting), par Guillaume Rossolini

Quelles conditions doit-on réunir pour pouvoir utiliser la réécriture ?

Auteurs : julp ,

Voici la liste des conditions à réunir pour être en mesure de tirer profit de la fonction de réécriture d'URL :

1 Le module mod_rewrite, quelle que soit sa forme - statique ou dynamique (par une directive LoadModule etAddModule dans le cas des versions 1.2 et 1.3), doit être activé.

2 Rendre ponctuellement (pour un hôte virtuel, depuis un répertoire, etc) actif le moteur de réécriture pour sesbesoins à l'aide de :

RewriteEngine On

Et spécifiquement pour la mise en place des règles dans un fichier .htaccess, s'ajoutent les étapes ci-dessous :

• Etre autorisé à suivre les liens symboliques (restriction à fin sécuritaire) : la directive Options du répertoire où ilest placé doit au moins avoir la valeur FollowSymLinks (éventuellement par héritage) ou être autorisé à redéfinircette dernière dans votre fichier htaccess.

Page 30: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 30/40

 

FAQ du serveur HTTP Apache

- 30 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Options FollowSymLinks (SymLinksIfOwnerMatch)

• La configuration du serveur doit aussi autoriser l'usage des directives de réécriture (Rewrite*) par au moins lavaleur FileInfo pour la directive AllowOverride par rapport au répertoire contenant ce fichier htaccess.

Comment utiliser la réécriture d'URL avec un hébergeur qui n'a pas mod_rewrite ?

Auteurs : Yogui ,

Vous pouvez tirer parti de l'Option MultiViews d'Apache. Vous pouvez utiliser le code suivant dans votre fichierhttpd.conf ou dans Qu'est-ce qu'un fichier .htaccess ? :

Options +MultiViews

Cette option vous permet d'ajouter du texte à la fin d'une URL.

Par exemple, si vous avez un script  photos/recherche.php, c'est lui qui sera exécuté par l'URL suivante : http:// www.exemple.com/photos/recherche/yogui/bovinoVous pouvez alors récupérer /yogui depuis la variable $_SERVER['PATH_INFO']. Exemple de script recherche.php :

<?php

echo '<pre>';

 print_r(explode('/', $_SERVER ['PATH_INFO']));

Résultat de http://www.exemple.com/photos/recherche.php/yogui/bovino :

 Array

(

[0] =>

[1] => yogui

[2] => bovino

)

Si vous souhaitez avoir des URLs propres, il vous suffit de ne pas préciser l'extension du script.

Résultat de http://www.exemple.com/photos/recherche/yogui/bovino :

 Array

(

[0] =>

[1] => yogui

[2] => bovino

)

Page 31: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 31/40

 

FAQ du serveur HTTP Apache

- 31 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Attention toutefois car le module Apache nécessaire, mod_negociation, est connu pour provoquer des réactions parfoisindésirables. La meilleure solution au manque de mod_rewrite est de changer d'hébergeur.

lien : Documentation de la directive Optionslien : Documentation de la négociation de contenu

Comment déchiffrer les erreurs serveur renvoyées dans le cadre de la réécriture ?

Auteurs : Julien Pauli , julp ,

Plusieurs types d'erreur liés à la réécriture peuvent se manifester :

• L'erreur 403 Forbidden peut survenir en l'absence d'une des options permettant de suivre les liens symboliques(FollowSymLinks) qui est nécessaire au fonctionnement de la réécriture (restriction à but sécuritaire).

• L'erreur 404 Not Found peut avoir plusieurs causes :

• Le module de réécriture est bien chargé mais est mal activé (absence de RewriteEngine On) ;• Le fichier .htaccess est totalement ignoré par le serveur de par sa configuration lorsque la directive

AllowOverride, pour le répertoire contenant ce fichier .htaccess (éventuellement par héritage) vaut Nonealors qu'au moins FileInfo est nécessaire ;

• Les règles sont erronées dans la mesure où il n'y a pas de correspondance avec la ressource demandée ;• Le document vers lequel la redirection est effectuée est inexistant. Ceci pouvant notamment s'expliquer

par une erreur au niveau du chemin.

• L'erreur 500 Internal server error :

• Le module mod_rewrite n'est pas actif. De ce fait, les directives Rewrite* ne sont pas reconnues et

conduisent à ce type d'erreur ;• La conf  iguration du serveur n'autorise pas l'usage des directives de réécriture (Rewrite*) par l'absence dela valeur FileInfo au niveau de la directive AllowOverride par rapport au répertoire contenant le fichierhtaccess ;

• Une règle engendre une boucle infinie. Si elle n'est pas interceptée par le navigateur avant que le serveurne s'en rende compte de lui-même, ce dernier mettra fin au processus avec une erreur 500.

Dans tous les cas, vous trouverez sans doute une explication explicite dans les journaux du serveur si tant est que vousy avez accès.

Quelles sont les différentes "variables" et à quoi correspondent-elles ?Auteurs : julp ,

Pour l'exemple nous supposerons que l'URL faisant l'objet d'une réécriture sera la suivante :https://www.monsite.fr/forum/admin/index.php?page=db&start=30

Les principales variables, avec leur valeur correspondant à l'exemple, sont :

Page 32: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 32/40

 

FAQ du serveur HTTP Apache

- 32 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Variable Description Valeur par rapport à l'exemple%{HTTP_HOST} Nom du serveur tel que demandé par

le client par l'intermédiaire de l'entêteHost

www.monsite.fr

%{SERVER_NAME}Nom réel du serveur www.monsite.fr

 

%{REMOTE_ADDR}Adresse du client  non montré

 

%{SERVER_ADDR}Adresse du serveur  non montré

 

%{THE_REQUEST}La ligne complète de la requête (sans lesentêtes)

GET /forum/admin/index.php?page=db&start=30 HTTP/1.1

 

%{HTTP_COOKIE}Une chaîne regroupant l'ensemble descookies que le client renvoie

skin=blue; pref_ordre=asc(deux cookies : skin de valeur blue etpref_ordre de valeur asc)

%{SERVER_PORT}Port d'écoute du serveur (80 : portstandard du protocole HTTP et 443

pour HTTPS)

443

%{HTTP_ACCEPT}Formats acceptés par le client text/xml,application/xml,application/ xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*; q=0.5

 

%{REMOTE_HOST}Nom de la machine cliente ou à défautson adresse

 non montré

 

%{REMOTE_PORT}Port utilisé par le client pour laconnexion

 non montré

 

%{REQUEST_URI}La ressource telle que demandée dansla requête HTTP (voir la variableTHE_REQUEST)

 /forum/admin/index.php

%{HTTP_REFERER}Indique la provenance de l'utilisateur

(il est déconseillé de l'utiliser car celle-cin'est pas fiable et est falsifiable)

 non montré

 

%{QUERY_STRING}Les paramètres passés dans l'URL,regroupés sous la forme d'une chaîne.Elle représente toute la partie situéeaprès le point d'interrogation (exclus), sitant est qu'elle existe.

page=db&start=30(deux paramètres : page de valeur db etstart de valeur 30)

%{SERVER_ADMIN}Correspond à la valeur de la directiveServerAdmin attribué au serveur

[email protected]

 

%{DOCUMENT_ROOT}La racine du serveur telle que définiepar la directive DocumentRoot

 /usr/local/www/apache22/data/ 

 

%{REQUEST_METHOD}Méthode HTTP employée par la requête

(généralement GET ou POST)

GET

 

%{HTTP_USER_AGENT}Identifiant du client Mozilla/5.0 (Windows; U; Windows NT5.1; fr; rv:1.8.1.11) Gecko/20071127Firefox/2.0.0.11

 

%{SCRIPT_FILENAME}et%{REQUEST_FILENAME}

Chemin complet (absolu) du documentappelé

 /usr/local/www/apache22/data/forum/ admin/index.php

%{SERVER_PROTOCOL}Description du protocole employé HTTP/1.1%{HTTPS} Booléen (valeur on ou off) indiquant

l'usage ou non du protocole sécurisé(peut être utilisée indépendamment de laprésence ou non du module ssl)

on

Page 33: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 33/40

 

FAQ du serveur HTTP Apache

- 33 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

A travers cet exemple il n'est possible de présenter que les variables liées à l'adresse demandée (le principal) car ellesse font en réalité bien plus nombreuses :

• %{HTTP: X } : en référence à l'entête HTTP X 

• %{ENV: X } : désigne la variable d'environnement X 

• %{SSL: X } : la variable d'environnement SSL X (en l'absence du module ssl, leur valeur sera une chaîne vide)• Toutes les variables relatives à la date et/ou l'heure : %{TIME_YEAR}, %{TIME_MON}, %{TIME_DAY},

%{TIME_HOUR}, %{TIME_MIN}, %{TIME_SEC}, %{TIME_WDAY}, %{TIME}

Comment éviter de réécrire une URL en boucle ?

Auteurs : julp ,

La réécriture en boucle infinie se présente d'elle-même dans le cas notamment où l'expression rationnelle utilisée auniveau d'une règle de réécriture (son premier paramètre) est telle qu'il y a correspondance sur le document vers lequelon redirige (le deuxième paramètre de RewriteRule).

Un exemple simple et fréquent de règle mal conçue pourrait être le suivant :

RewriteRule (.*) /index.php?page=$1

Ainsi, lorsque le document index.php sera demandé, après une première redirection interne, se verra par la suiteindéfiniment réécrit en index.php?page=index.php.

Pour l'éviter, par rapport à l'exemple précédent, il convient d'ajouter une condition (directive RewriteCond) pourécarter l'index lui-même.

RewriteCond %{REQUEST_URI} !=/index.php # Le chemin complet du script tel qu'apparaissant dans l'URL

RewriteRule (.*) /index.php?page=$1

Ce perpétuellement recommencement pourra être détecté p ar le client sinon par l e serveur

(génération d'une erreur 500 avec consignation de l'incident dans le journal d'erreur).

Ce phénomène peut aussi apparaître sur d'autres parties de l'URL : la partie query string en

est un autre exemple avec la retransmission d'un paramètre qui est mal géré.

Comment déboguer la réécriture d'URL ?

Auteurs : julp ,

La directive RewriteLog indique le chemin vers le fichier dans lequel sera détaillé le processus de réécriture et sonassociée, RewriteLogLevel, précise le degré de verbosité des différentes opérations effectuées en interne. Sa valeurs'échelonne de 0, pour ne générer aucune entrée dans le journal, à 9 pour obtenir un maximum d'informations.

Page 34: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 34/40

 

FAQ du serveur HTTP Apache

- 34 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

 Plus la valeur de la directive RewriteLogLevel sera import ant plus sa verbosité ser a élevée.

 Elle pourra avoir pour conséquence d'écrire quantité d'informations dans son journal et avoir

un impact néfaste sur les performances du serveur.

Comment faire de la réécriture sur la partie dite "Query String" ?

Auteurs : julp ,

Par défaut toute cette partie de la requête est transmise (copiée) lors de la redirection. Mais dès lors que vous lesmanipulez par une règle, même pour ajouter simplement une telle variable, vous devez mentionner l'option QSA pourla redirection concernée pour ne pas les perdre et retrouver ce comportement par défaut.

La directive RewriteRule ne teste la correspondance que sur la partie  chemin de l'URL. Pour tester les variables quicomposent la partie query string vous devrez faire appel à la directive RewriteCond dont son premier paramètre aurapour valeur %{QUERY_STRING}, variable désignant ce morceau de l'URL (voir exemple ci-bas).

Voici quelques opérations qu'il est possible de réaliser :

• Pour supprimer entièrement la partie query string lors d'une redirection, et en tenant compte des spécificitésévoquées plus haut, faites apparaître le point d'interrogation à la fin de la requête de redirection de votre directiveRewriteRule :

RewriteRule ^page_avec_parametres\.php$ page_sans_parametre.php?

Lorsque vous ferez appel à la page page_avec_parametres.php vous serez redirigés sur page_sans_parametres.php.Tous les paramètres passés par URL seront supprimés lors de l'appel à ce second script.

• Sans l'option QSA les anciennes variables ne seraient pas transmises et nous n'obtiendrions que le paramètre nouvelle_variable par rapport à l'exemple ci-dessous. Il est donc nécessaire de mentionner l'option QSA afin deconserver ces paramètres lors de l'opération de réécriture :

RewriteRule ^page_d_origine\.php$ page_de_destination.php?

nouvelle_variable=nouvelle_valeur [QSA]

Ici quels que soient les paramètres fournis lors de l'appel au script page_d_origine.php ils seront recopiés mais une

nouvelle variable, nommée nouvelle_variable ayant pour valeur nouvelle_valeur, sera ajoutée à celles d'origine.• Il est possible de n'effectuer qu'un test de présence d'une telle variable. Dans l'exemple ci-dessous, est interdit (le

serveur renverra une erreur 403) tout accès à l'index si le paramètre secret magique n'est pas stipulé.

RewriteCond %{QUERY_STRING} !(?:^|&)magique(?:=|&|$)

RewriteRule ^index\.php$ - [F]

Note : le contrôle peut également et parfaitement porter sur plusieurs paramètres et sur leur valeur respective.

• Réécrire un chemin purement virtuel dont chaque partie deviendrait des paramètres. Par exemple, une URL telleque http://www.monsite.fr/livredor/ serait en réalité http://www.monsite.fr/index.php?page=livredor :

Page 35: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 35/40

 

FAQ du serveur HTTP Apache

- 35 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

# Exemple 1 (chemin simple)

RewriteRule ^([^/.]+)/?$ index.php?page=$1 [QSA]

# Exemple 2 (double chemin)RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=$1&action=$2

• Et enfin, l'opération inverse du cas précédent, à savoir faire de paramètres le chemin vers le document réel àappeler, en somme utiliser une URL http://monsite.fr/?module=a&action=b pour servir http://monsite.fr/a/b/ :

RewriteCond %{QUERY_STRING} (?:^|&)module=([^&]+)&action=([^&]+)

RewriteRule ^(?:index\.php)?$ /%1/%2/

Page 36: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 36/40

 

FAQ du serveur HTTP Apache

- 36 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Modules > Les jounaux

Comment effectuer une rotation des journaux Apache ?Auteurs : julp , SurferIX ,

En plus des moyens offerts par votre système d'exploitation (citons par exemple logrotate sous GNU/Linux ou encorenewsyslog sous BSD), s'ajoute un utilitaire, inclus avec Apache, nommé rotatelogs. Pour utiliser celui-ci, qui gérera ainsientièrement le ou les journaux indiqués, il sera nécessaire de modifier les lignes CustomLog (journaux des requêtes)et/ou ErrorLog (journal dit d'erreur) du fichier de configuration d'Apache de sorte à renvoyer, par une notation detype tube, les données vers ce programme.

Les fichiers de logs peuvent ainsi être renouvelés après un certain délai ou lorsqu'ils ont atteint la taille maximalepréétablie. Des possibilités de nommage des fichiers créés par rapport aux date et heure sont également possibles.

Exemple où nous désirons créer un fichier différent par jour et où la date fera partie du nom du fichier :

# Journal d'accès

CustomLog "|bin/rotatelogs logs/access.%Y-%m-%d.log 86400" common

# ...

# Journal d'erreur

ErrorLog "|bin/rotatelogs logs/error.%Y-%m-%d.log 86400"

 Apache créera un nouveau processus distinct pour le pro gramme rotatelogs pou r chaque

 journal (directives ErrorLog et CustomLog) qui y fait appel. Ainsi, pour 20 hôtes virtuels

 avec des journaux d'accès et d'erreurs individualisés, vous aurez 40 processus rotatelogs apparents.

lien : La documentation du programme rotatelogs

Page 37: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 37/40

 

FAQ du serveur HTTP Apache

- 37 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Erreurs courantes et résolution

L'erreur "Forbidden" (403)Auteurs : julp ,

Cette erreur signifie que la ressource demandée ne peut être vue par le client. Les raisons peuvent être :

• Des droits insuffisants au niveau des fichiers : l'utilisateur sous lequel tourne Apache ne possède pas les droitspour accéder à la ressource (sous Linux/Unix les répertoires doivent disposer du droit d'exécution et de lecturesur les fichiers pour cet utilisateur).

• Absence d'un fichier d'index de répertoire (voir la valeur de la directive DirectoryIndex) et l'option de listing derépertoire n'est pas en vigueur (Options (+)Indexes).

• Une règle de type Deny interdit votre machine sur cette partie du serveur.• Apache n'est pas autorisé à suivre les liens symboliques (Options FollowSymLinks voir SymLinksIfOwnerMatch

requise).

L'erreur "Internal Server Error" (500)

Auteurs : julp ,

L'erreur Internal Server Error est souvent liée à l'utilisation des fichiers htaccess, à l'exécution de programmes dits CGIet parfois une requête invalide de la part du client.

Dans le premier des cas, vérifiez que vous n'utilisez pas de directives erronées, indisponibles ou Pourquoi monfichier .htaccess n'est pas pris en compte ? dans votre fichier htaccess par rapport à la configuration générale du serveur.

Ces erreurs trouvent souvent leur explication dans les journaux du serveur. N'hésitez pas à le consultez si vous y avezaccès !

L'erreur "Could not reliably determine the server's fully

qualified domain name, using x.x.x.x for ServerName"

Auteurs : _Mac_ ,

Ceci n'est en réalité qu'un simple warning signalant l'absence d'une directive ServerName globale, Apache tentant alorsd'en déterminer une.

Explicitez en une si vous ne souhaitez plus voir ce message.

Cette erreur se présente sur toute distribution Debian ou dérivée, étant donné sa confi guration

initiale préférant définir le virtualhost par défaut.

Que faire lorsque le port 80 est déjà occupé ?

Auteurs : julp ,

Plusieurs options sont possibles :

• Identifier et mettre fin au processus responsable de cette occupation. Reconfigurer éventuellement l'applicationfautive si elle le permet.

Page 38: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 38/40

 

FAQ du serveur HTTP Apache

- 38 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Dans le cas de Skype, par exemple, aller dans le menu Outils puis Options, onglet Avancées, sélectionnerConnexion dans le sous-menu. Reconfigurer les ports employés puis relancer le logiciel.

• Comment changer le port d'écoute d'Apache ? pour éviter tout conflit.

Pourquoi mon authentification par fichiers .htaccess/.htpasswd ne fonctionne pas ?

Auteurs : julp ,

Plusieurs raisons peuvent expliquer un dysfonctionnement à ce niveau, dépendant des symptômes qui se présentent :

• La boîte de dialogue demandant habituellement à l'utilisateur ses login et mot de passe ne s'affiche pas : il fautcontrôler que vous avez la permission de définir des directives liées à l'authentification dans un fichier .htaccesssur ce répertoire. C'est à dire, que la valeur de la directive AllowOverride soit au moins à AuthConfig pour lerépertoire (<Directory>) en question (voir un parent duquel il y aurait héritage) dans le fichier de configurationd'Apache.

• Obtention d'une erreur 500 (Apache 2 uniquement) : il s'agit probablement d'une erreur dans le chemin indiquéà la ligne AuthUserFile.

• Mes identifiants me sont sans cesse demander car Apache ne semble pas les reconnaître ; plusieurs possibilités :

• possesseur d'une version 1.3, le fichier .htpasswd est introuvable à l'endroit indiqué (ligne AuthUserFile) ;

• le login et/ou le mot de passe sont erronés. Par rapport à cela, il est vivement conseillé d'employer l'utilitairehtpasswd, accompagnant Apache, pour créer et maintenir son fichier d'utilisateurs. Il y a, en effet, dessubtilités qu'il est bon de prendre en compte :

• la disponibilité de certains algorithmes de chiffrage est propre au système employé. Ainsi crypt n'est

pas disponible sous Windows et les systèmes n'offrant aucune restriction à ce niveau n'accepterontpas des mots de passe en clair ;

• l'algorithme de hachage MD5 est propre à Apache. Il a volontairement été modifié dans le but d'enrenforcer la sécurité. L'usage de tout autre outil générant de telles empreintes ne fonctionnera pas(PHP notamment).

lien : Pourquoi mon fichier .htaccess n'est pas pris en compte ?

Je suis sous Windows 2000 ou XP, et Apache 2 tronque les pages et

fichiers envoyés au client. Que se passe-t-il ? Comment y remédier ?

Auteurs : Wolfy ,Il s'agit d'un bug lié au système de fichiers NTFS. Pour y remédier, il faut s'assurer que les directives suivantes sontprésentes dans le Où se trouve le fichier de configuration httpd.conf ? :

EnableSendfile Off

EnableMMAP Off

 Win32DisableAcceptEx

Page 39: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 39/40

 

FAQ du serveur HTTP Apache

- 39 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://apache.developpez.com/faq/ 

Sommaire > Particularités de certains hébergeurs

Page 40: Faq Apache

5/13/2018 Faq Apache - slidepdf.com

http://slidepdf.com/reader/full/faq-apache 40/40

 

FAQ du serveur HTTP Apache

- 40 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

Sommaire > Particularités de certains hébergeurs > Free

Comment mettre en place une authentification chez Free ?Auteurs : _Mac_ ,

Deux changements importants sont à respecter :

1 Les mots de passe ne doivent pas être chiffrés, ils doivent être écrits en clair ;2 Il est nécessaire de précéder l'habituelle directive AuthFile de la directive PerlSetVar. Le chemin indiqué pour

le fichier des mots de passe sera alors relatif à la racine de votre site.

Exemple : soit un fichier contenant les différents utilisateurs et leur mot de passe respectif placé dans le répertoire prive

à la racine du site sous le nom .htpasswd . Le fichier .htaccess doit donc être rédigé de la manière suivante :

 

PerlSetVar AuthFile prive/.htpasswd

 AuthName "Acces Restreint"

 AuthType Basic

require valid-user

 Il serait préférable de s'assurer que tout fichier contenant ces mots de passe ne puis se être lu

 par un utilisateur pouvant en connaître l'adresse (voir, si besoin, Comment interdire l'accès

 aux fichiers inc ou xml ?).