Apache - Multiple AccessFileName .htaccess

Tags: #<Tag:0x00007f63e290ff40>

Bonjour,

J’aimerais savoir (à priori non - TODO) - Apache → AccessFileName .htaccess

Pourrait-on dans la directive AccessFileName faire en sorte que si je configure plusieurs htaccess qu’ils soient pris en compte les uns après les autres SANS OUBLIER les configurations des fichiers htaccess précédent.

Par exemple :

Je configure dans le fichier de configuration d’Apache /etc/apache2/apache2.conf:

AccessFileName .htaccess.default .htaccess.restrict .htaccess

Puis dans mon répertoire racine d’un VHOST je crée mes 3 fichiers :

Fichier .htaccess.default

# REWRITE

# On suit les liens symboliques
Options +FollowSymlinks

# Activation du mod rewrite d'Apache
RewriteEngine On

# REWRITE

Fichier .htaccess.restrict

# RESTRICTION IPs

Order deny,allow

Deny from all
# Exemple : votre IP pour le test
Deny from 194.195.91.60

Allow from all

# RESTRICTION IPs

Fichier .htaccess

# REDIRECTION DEFAULT

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !(\.(ico|gif|jpe?g|png|bmp|css|js|swf|pdf|class|tpl|asx|flv|ogg|webm|dat|phps))|(ads.txt|robots.txt|sitemap.xml)$ /index.php [L]

# REDIRECTION DEFAULT

Résultat : çà prend en compte que le dernier fichier (façon de parler) - Je n’ai pas rewrite ni de restriction d’IP !

Ce serait bien :stuck_out_tongue: :wink:

Cette demande pour la simple raison de pouvoir avoir un fichier pour restreindre les bots, les adresses IPs etc. (qu’on ajouterait à plusieurs vhosts puis avoir son .htaccess selon le site Web avec le redirection d’URL propre au site etc…

En vous remerciant.

Romain (LAB3W.FR) - Creator ZW3B.FR

Perso, je m’y prendrais autrement.

AccessFileName .htaccess

Et je ferais des inclusions de fichiers :wink:

Include .htaccess.restrict

etc…


PS : ceci est une idée, non testée, car cela fait vraiment longtemps que je n’administre plus de l’Apache

2 J'aime

Bonjour,

La doc n’est pas très précise là-dessus mais de ce que je comprends seul le premier fichier de configuration (dans l’ordre alphabétique ?) de la liste est traité :
https://httpd.apache.org/docs/2.4/mod/core.html#accessfilename

Sur le principe, je trouve ton idée de configuration assez tordue.
Si une configuration doit s’appliquer à plusieurs hôtes virtuels il vaut mieux la mettre dans un fichier sous /etc/apache2/conf-available et l’activer soit pourt tous les hôtes avec a2enconf, soit pour certains avec une directive Include.
De manière générale, il vaut mieux si possible éviter l’utilisation de fichiers .htaccess. Lire :
https://httpd.apache.org/docs/2.4/howto/htaccess.html#when

2 J'aime

Merci beaucoup @PengouinPdt - Je vais essayer cela, ça doit fonctionner :relaxed:

@anon70622873 certes ce serait plus « obligatoire » -L’utilsateur du VHost ne pourait pas supprimer la configuration.

@anon70622873 En fait le problème était : il prend le 1er, puis le 2eme puis le 3eme - Mais oublie les paramètres des 2 premiers :confused:

Merci messieurs.

@PengouinPdt - @anon70622873 çà ne fonctionne pas :confused: sniff !

Que je fasse un/des include via le .htaccess :

Résumé
Include .ht_default-access
Include .ht_restrict-access
Include .ht_restrict_bot-access

ou :

Résumé
Include /var/pro/web_sites/zw3b_fr/www/web/.ht_default-access
Include /var/pro/web_sites/zw3b_fr/www/web/.ht_restrict-access
Include /var/pro/web_sites/zw3b_fr/www/web/.ht_restrict_bot-access

Qui me ressort une erreur 503 …

Bonne journée :wink:

Il me semblait l’avoir dit, mais en fait j’ai oublié :wink:
Les directives Include ne fonctionnent pas dans un .htacess
Pour le reste, voir ma réponse précédente.

1 J'aime

Merci @anon70622873, j’essaie çà :slight_smile:

  1. Dans les fichiers de mon/mes VHosts çà ne fonctionne pas Apache ne redémare pas !
    Du moins ^^ en ajoutant une ligne Include /var/pro/web_sites/zw3b_fr/www/web/.ht_default-access ; mais cela ne doit pas être comme çà qu’il faut faire ! Je check :slight_smile:
  2. Sinon dans conf-available certes… je vais test :wink:

OKay : çà fonctionne bien !

Je vous écris ce que j’ai fais.

Il faut faire quelque chose comme cela :

Par exemple, créer un fichier : conf-available/ht_rewrite-access.conf

# REWRITE

# On suit les liens symboliques
Options +FollowSymlinks

# Activation du mod rewrite d'Apache
RewriteEngine On

# REWRITE

Et écrire dans le fichier de mon virtualhost Include conf-available/ht_rewrite-access.conf

Par exemple, créer un fichier : conf-available/ht_restrict_ip-access.conf

# RESTRICTION IPs

Order allow,deny

Allow from all

Deny from 1.2.3.4
Deny from 1234:5678:90:abcd:ef:1234:5eef:1

# RESTRICTION IPs

Qu’il faut impérativement mettre dans une/la directory du virtualhost.

Par exemple, créer un fichier : conf-available/ht_rewrite_bot-access.conf

# RESTRICTION BOTs

RewriteCond %{HTTP_USER_AGENT} ^(.*)Crawler* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)BUbiNG* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)anonymousfox* [NC]

RewriteRule ^(.*) - [F,L]

# RESTRICTION BOTs

Et écrire dans le fichier de mon virtualhost Include conf-available/ht_rewrite_bot-access.conf

Sinon, après avoir ajouter/supprimer/modifier une configuration dans un de ces fichiers, pas besoin de reload apache - en fait. Pour ma pomme çà me permet quand même de pouvoir gérer/proposer les bots et adresses IPs à bloquer plus facilement en modifiant qu’un seul fichier et non pas plusieurs.

Merci @anon70622873

PS : Je vous transmet ce lien avec de bonnes informations : Stupid .htaccess Tricks

NdMoi-même 17h20 : Pour la restriction des bots, une bonne idée (AUSSI :wink: ) est le fichier robots.txt à la racine de vos sites Web - Par exemple j’ai trouvé ce projet sur GITHub : https://github.com/jonasjacek/robots.txt

Exemple (Hors contexte) fichier https://www.domain.tld/robots.txt à la racine des vos sites Web :slight_smile: :

# Les users agents "autorisés" 
User-agent: 360Spider
User-agent: 360Spider-Image
User-agent: 360Spider-Video
User-agent: AdsBot-Google
User-agent: AdsBot-Google-Mobile
User-agent: AdsBot-Google-Mobile-Apps
......
User-agent: YioopBot
User-agent: yoozBot
User-agent: YoudaoBot
# Sauf pour ces URLs
Disallow: /ajax
Disallow: /api
# Puis ==> Tout les autres
User-agent: *
Disallow: /

Romain - Créateur ZW3B.TV :wink:

1 J'aime

Il vaut mieux se référer à la documentation officielle d’Apache plutôt qu’à des articles plus ou moins bien faits.
Cela t’évitera par exemple d’utiliser des directives obsolètes pour les contrôles d’accès
On peut aussi se demander si l’utilisation de directives BrowserMatch associé aux contrôles d’accès n’est as plus efficace que des règles de réécriture mal foutues ; entre autres [F,L] avec un L superflu

Cà j’en suis sûr ^^ Tu as bien raison !

Ouais @anon70622873 çà pourrait/semblerait pouvoir être vrai et très faisable :slight_smile: Merci pour ces informations !