Apache : propagation du .HTACCESS ?

Apache : propagation du .HTACCESS ? - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 17-03-2008 à 10:18:24    

Bonjour,
 
J'aime Apache, fléxible, léger, très fonctionnel si ce n'est quelques points obscures qui m'échappent...
 
Dont, la gestion des fichiers .htaccess. Alors évidement, j'ai cherché sans trouver de réponses précises, je pose donc la question ici.
 
J'utilise un fichier .htaccess depuis pas mal de temps pour faire de l'url rewrite. Mais, chose très bête je me suis aperçu que je n'avais pas désactivé le directory listing. Je voudrais donc le désactivé à l'aide d'un .htaccess que je placerais à la racine de mon serveur Apache (/var/www/) et qui se propagerait à la totalité des sous répertoires.
 
Déja :
 
- est-ce possible ?
 
- ensuite (si oui) :  
 
La directive "AllowOverride All" qui permet la prise en compte du .htaccess :
 

Citation :

<Directory /var/www/*>
   AllowOverride All
</Directory>


 
je place mon .htaccess dans /var/www et je redémarre apache
 
Donc si je me promène dans "http://mon_site.com/la_ou je_ne_dois_pas_aller" je devrai avoir une erreur d'interdiction 403. Mais non, j'ai le listing directory d'apache.
 
Maintenant si j'utilise ce paramètre :
 

Citation :

<Directory /var/www/*>
   Options -Indexes FollowSymLinks MultiViews
   AllowOverride All
</Directory>


 
L'interdiction se propage bien avec ou sans .htaccess à tout les sous répertoires. Or ce que je veux, c'est utiliser uniquement le .htaccess pour cette interdiction et non la directive "Options -Indexes" qui de toute facon est placé dans le .htaccess, je placerais également les exceptions dans ce fichier ce qui sera plus simple à configurer. Pour info je vous laisse mes directives (au cas ou certaines entrainerais un conflit) :
 

Citation :

<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
 
(...)
 
 <Directory "/usr/share/apache2/error">
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
    </Directory>
 
(...)
 
DocumentRoot /var/www/
AccessFileName .htaccess
 
<Directory /var/www/*>
#   Options -Indexes FollowSymLinks MultiViews
   AllowOverride All
</Directory>
 
#<Directory /var/www/dnl>
# AllowOverride All
# Options Indexes SymLinksIfOwnerMatch IncludesNoExec
#IndexOptions FancyIndexing ScanHTMLTitles IconsAreLinks FoldersFirst
#</Directory>
 
Alias /webmail "/usr/share/squirrelmail"
   <Directory "/usr/share/squirrelmail">
     Options Indexes FollowSymLinks MultiViews
       AddType application/x-httpd-php .php
         AllowOverride All
          Order allow,deny
    Allow from all
</Directory>
 
 
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>


 
 
Merci de votre aide ;)

Message cité 1 fois
Message édité par Drwily le 17-03-2008 à 11:26:01
Reply

Marsh Posté le 17-03-2008 à 10:18:24   

Reply

Marsh Posté le 18-03-2008 à 08:46:34    

UP ! Toujours pas trouvé de solution  :hello:

Reply

Marsh Posté le 18-03-2008 à 08:49:43    

http://httpd.apache.org/docs/2.0/howto/htaccess.html


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 19-03-2008 à 12:11:16    

Merci pour ton aide, j'avais déja regardé cette documentation il y a longtemps et je n'y rien trouvé de plus que ce que j'explique dans mon premier post.
 
mise a part cette phrase : The Options directive controls which server features are available in a particular directory.
 
Mais si l'on cherche sur d'autres sites on peut y lire que le HTACCESS et certaines options peuvent se propager à tout les sous répertoires...

Reply

Marsh Posté le 19-03-2008 à 16:26:13    

Quelques trucs divers:
 

Drwily a écrit :

J'utilise un fichier .htaccess depuis pas mal de temps pour faire de l'url rewrite


 
Fais attention avec l'URL rewriting, si t'utilises des fichiers .htaccess à plusieurs endroits. Par défaut, seules les règles de réécriture du fichier .htaccess le plus proche parent du répertoire de l'adresse demandée sont prises en compte. Les règles des .htaccess des répertoires parents ne sont pas prises en compte. Genre si t'as un fichier .htaccess avec des RewriteRule dans /foo/ et /foo/bar/, et que tu demandes /foo/bar/test.html, seuls les RewriteRule de /foo/bar/.htaccess seront executées.
 
C'est des plus anti-intuitif, étant donné que les autres instructions sont héritées... et leur "RewriteOptions inherit" sert à rien, dans une bonne partie des cas, puisque ça fait qu'importer tes RewriteRule comme si elles étaient dans le fichier .htaccess actuel... donc les tests, patterns et substitutions seront généralement mauvais. C'est vraiment pas super, niveau modularisation.
 

Drwily a écrit :

je place mon .htaccess dans /var/www et je redémarre apache


 
T'as pas besoin de redémarrer Apache, quand tu changes un ".htaccess". Ils sont lus à chaque fois, si y'a une modification.
 

Drwily a écrit :

<Directory /var/www/*>


 
Pas besoin d'utiliser '*', ici. Ça risque d'ailleurs probablement de poser problème, niveau héritage. Avec ce joker, si tu modifies quelque chose dans "/var/www/foo/", je suppose que dans "/var/www/foo/bar/", ça sera la valeur qui est dans ton bloc qui match "/var/www/*", qui sera prise en compte, au lieu d'hériter de la valeur qui est dans "/var/www/foo/".
 
D'autre part, pourquoi tu veux mettre ces instructions, dans /var/www/.htaccess? Si tu contrôles tout, autant les mettre dans ton fichier de configuration d'Apache. Si c'est une machine de développement, ça changera pas grand chose, mais pour des tests de performance, et des machines de production, vaut mieux éviter au maximum les .htaccess.
 
 
Pour le reste, je comprends pas trop ce que tu veux faire, et faut que je retourne travailler ^_^; Bye.

Reply

Marsh Posté le 20-03-2008 à 08:58:31    

Ekuryua --->
 
Merci, tu es pile-poil dans ce que je recherche.  :jap:  
 

Citation :

Genre si t'as un fichier .htaccess avec des RewriteRule dans /foo/ et /foo/bar/, et que tu demandes /foo/bar/test.html, seuls les RewriteRule de /foo/bar/.htaccess seront executées.


 
Si j'ai bien compris, ce sont les répertoires enfants qui priment sur les répertoires parents dans ce cas précis ? Étant donné que je n'utilise qu'un seul fichier .htaccess pour le rewrite (pour l'instant) je n'avais jamais remarqué cela. C'est bon à savoir, d'autant plus que j'aurais eu tendance à prendre ça pour un bug  :sweat:  
 

Citation :

pourquoi tu veux mettre ces instructions, dans /var/www/.htaccess?


 
Eh bien je me suis dit que c'était la solution la plus rapide et la plus flexible pour propager des directives communes à tous les répertoires (le option -indexes par exemple) et ainsi mettre des directives spécifiques dans les autres (comme le rewrite engine). Mais effectivement je ne me suis pas posé la question des perf et des problèmes d'héritages.
 

Citation :

Pour le reste, je comprends pas trop ce que tu veux faire,


 
En fait c'est un serveur qui regroupe 1 site, 1 web radio, téléchargement et webmail. J'utilise l'URL rewrite pour la WEB radio afin de masquer le port utilisé pour rendre l'URL plus lisible et plus accessible (par exemple "http://zik.com/nom_du_stream:8000" en "http://zik.com/nom_du_stream" ) et comme les flux changent souvent ça m'évite d'avoir à mettre à jour mes lien systématiquement. Bon ça, ça fonctionne.
 
En résumé ce que je cherche à obtenir
 
- Webmain : /var/www/webmail --> Options -Indexes
 
- site : /var/www/site ---> Options -Indexes
 
- radio : /var/www/radio ---> Options -Indexes + URL rewrite
 
- téléchargements spécifiques : /var/www/downl ---> Options -Indexes + URL rewrite
 
Comme le Options -Indexes est commun à tous les répertoires présents dans WWW j'ai pensé qu'un .htaccess pourrait me faire ça globalement. Mais si tu me dis qu'il est préférable pour les perf d'Apache d'inclure cette directive dans le fichier de config c'est ce que je ferais.
 

Citation :

Pas besoin d'utiliser '*', ici. Ça risque d'ailleurs probablement de poser problème, niveau héritage.


 
bas çà, c'est ce que je déclare dans httpd.conf parce que justement ça n'était pas prit en compte dans le .htaccess placé dans WWW. Comme il n'y pas d'autre directives contraire a celle ci, je ne crois pas que çà puisse posé des problèmes d'héritage.
 
En tout cas, merci de ta réponse  :hello:


Message édité par Drwily le 20-03-2008 à 08:59:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed