Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 09h32   #1
Membre régulier
 
Avatar de kéraunos
 
Homme
Inscription : janvier 2005
Messages : 157
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 157
Points : 71
Points : 71
Par défaut [.htaccess] Direction A vers B et B vers C mais pas A vers C

Bonjour à tous.

Je chercher à sécuriser vite fait le répertoire bin sur mon serveur web : je veux empêcher l'accès à son contenu via l'URL. Un Options -Indexes ne suffit qu'à empêcher de naviguer dans bin et ses sous-répertoires mais pas de télécharger les fichiers s'y trouvant si on a accès à leurs URLs.

Donc, pour cette partie, je souhaite que si l'on accède à http://www.site.com/bin/* (l'astérisque signifie "toute chaîne de caractères"), on soit redirigé vers http://www.site.com/bin/index.php (qui est une page qui dit "Accès Interdit" et redirige ailleurs).

Mais je veux conserver l'accès en mode filou pour les personnes autorisées : mettons, via http://www.site.com/foo/archive.zip on est redirigé vers http://www.site.com/bin/archive.zip. (foo étant en réalité un vilain hash impossible à mémoriser)

Voilà ce que j'ai écrit dans le .htaccess du répertoire bin :

Code :
1
2
RewriteRule ^bin/(.*)$ bin/index.php [L]
RewriteRule ^foo/(.*)$ bin/$1 [L]
Oui mais voilà, comme vous devez vous en douter : foo/* est réécrit en bin/*, qui lui-même est réécrit en bin/index.php. Or je ne veux tout simplement pas de cette deuxième réécriture dans le cas où l'URL de départ était bien foo/*.

Comment puis-je m'y prendre ?

Merci.
kéraunos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 22h03   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 297
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 297
Points : 8 578
Points : 8 578
Il faut que tu ajoutes une information (en tant que variable d'URL) pour dire d'où vient la réécriture et rediriger selon les cas :
Code :
1
2
3
4
RewriteCond %{QUERY_STRING} !parametre_pipo=
RewriteRule ^bin/(.*)$ bin/index.php [L]

RewriteRule ^foo/(.*)$ bin/$1?parametre_pipo=true [QSA,L]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h32   #3
Membre régulier
 
Avatar de kéraunos
 
Homme
Inscription : janvier 2005
Messages : 157
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 157
Points : 71
Points : 71
Merci beaucoup _Mac_, ta solution fonctionne, à un détail près : il faut que j'insère un anti-slash avant le point d'interrogation pour introduire la variable d'URL.

Autrement dit, voici le code qui chez moi fonctionne :
Code :
1
2
3
4
RewriteCond %{QUERY_STRING} !allow=
RewriteRule ^bin/(.*)$ bin/index.php [L]

RewriteRule ^foo/(.*)$ bin/$1\?allow=true [QSA,L]
Edit : finalement, foo ne sert plus à grand chose. Ce qui est nécessaire et suffisant, c'est que les personnes autorisées connaissent le nom de la variable d'URL.
kéraunos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h30.


 
 
 
 
Partenaires

Hébergement Web