1

Bonjour à toutes et à tous!

Je développe un site web dans le cadre d'un stage et je rencontre un petit problème niveau .htaccess.

Mon site est organisé sous forme d'une arborescence de dossiers. Je voudrai que l'utilisateur, quand il entre un nom de sous dossier (par exemple http://mondomaine/css/) ne puisse voir le contenu du dossier et soit par la même redirigé vers http://mondomaine/index.php.

J'ai reussis à le faire en mettant dans le dossier (dans mon exemple le dossier css) un fichier .htaccess contenant cette ligne:
DirectoryIndex ../index.php


ça marche bien puisque ça empeche l'affichage du contenu du repertoire et ça me redirige bien mais le probleme c'est que c'est une "fausse redirection" car dans la barre d'adresse de mon navigateur j'ai toujours http://mondomaine/css/ et donc de ce fait la page index.php qui est affichée est incomplete (liens des images, css, scripts cassés).

Une idée pour faire une redirection propre? Sachant que je me fout des moteurs de recherches, pagerank & cie puisque c'est un site intranet.

D'avance merci!
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

2

Redirect /css/ http://www.tonsite.com/ ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

!! Quelle rapidité!

Heu ça me lance une erreur 500.

Et quand je mets ce .htaccess à la racine et que je vais dans le dossier css ça fait comme s'il n'y avait pas de .htaccess.
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

4

hmm peut-être avec du rewriting alors, si ton serveur le supporte :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^css/.*$ index.php [R=301,L]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Merci pour ta rapidité mais ce htaccess qu'il soit placé à la racine ou dans le dossier donné me donne une erreur 500.

C'est biarre qu'il n'existe pas une solution simple pour cela, c'est quand même un besoin fréquent des webmasters non? (je débute)
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

6

Regarde le contenu du log d'erreur d'Apache, les solutions des posts ./2 et ./4 fonctionnent (je viens d'essayer pour en avoir le coeur net), mais peut-être que ta configuration a besoin de paramètres différents.

(et pour la précision, le .htaccess fera effet dans le dossier où il a été placé et tous ses sous-dossiers)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

Okay je vais regarder les logs d'apache et mettre les mains dans les fichiers de conf.

Donc en gros à la racine du site je devrai mettre un fichier .htacess contenant:

Redirect /css/ http://www.tonsite.com/
Redirect /secret/ http://www.tonsite.com/
Redirect /mon_dossier_protege/ http://www.tonsite.com/
...


?
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

8

Heu tu as bien remplacé "http://www.tonsite.com/" par l'url de la racine de ton site ? grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Oui oui, ça ne redirige pas. En fait j'aimerai éviter le rewriting, donc la solution redirect me convient plus (c'est plus explicite).

Cepandant quand je mets un fichier .htacess à la racine avec dedans du redirect il ne me fait rien, pas même une erreur 500 (qu'il me fait pourtant si je lui mets du rewriting).
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

10

par contre, ca risque pas d'empêcher l'access aux CSS ? (je veux dire par là empêcher une utilisation normale) J'ai pas tester, c'est juste une idée comme ca
Ancien pseudo : lolo

11

JoNas (./9) :
Oui oui, ça ne redirige pas. En fait j'aimerai éviter le rewriting, donc la solution redirect me convient plus (c'est plus explicite).

Le rewriting avec le flag "R=301" avait le même effet de redirection (avec l'adresse qui change dans la barre d'adresse & co)
Cepandant quand je mets un fichier .htacess à la racine avec dedans du redirect il ne me fait rien, pas même une erreur 500 (qu'il me fait pourtant si je lui mets du rewriting).

Tu rediriges vers la racine de ton site ? Dans ce cas ça serait normal, puisque ça redirige en boucle à l'infini jusqu'à ce qu'Apache décide d'arrêter la boucle, il ne faut pas rediriger un dossier vers lui-même.
Spipu (./10) :
par contre, ca risque pas d'empêcher l'access aux CSS ? (je veux dire par là empêcher une utilisation normale) J'ai pas tester, c'est juste une idée comme ca

Ah c'est sûr, mais si il veut conserver l'accès aux CSS alors ce n'est pas une redirection qu'il faut faire, le plus simple serait juste de rattraper les erreurs 404 et envoyer l'utilisateur sur une page ("ErrorDocument 404 http://www.tonsite.com/index.php").
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Zephyr (./11) :
Spipu (./10) :
par contre, ca risque pas d'empêcher l'access aux CSS ? (je veux dire par là empêcher une utilisation normale) J'ai pas tester, c'est juste une idée comme ca

Ah c'est sûr, mais si il veut conserver l'accès aux CSS alors ce n'est pas une redirection qu'il faut faire, le plus simple serait juste de rattraper les erreurs 404 et envoyer l'utilisateur sur une page ("ErrorDocument 404 http://www.tonsite.com/index.php").


ok, on est d'accord happy c'est bien ce qu'il me semblait... donc les solutions décrites ci-dessus ne conviendront pas à son cas il me semble, non ?

perso je mettrais juste un fichier index.php comprenant <?php header('location: ../'); ?>
Ancien pseudo : lolo

13

yep mais ça, il faut le recopier partout si il a plusieurs dossiers, et ça ne fonctionne que si on ne précise pas de fichier au bout de l'url (d'ailleurs le ./11 est incomplet, il faudrait aussi chopper les 403)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

je suis d'accord avec toi, mais comment tu veux faire pour distinguer un acces à un fichier .css classiquement (via une page web), et détournée (en rentrant l'url) ?

car là, si j'ai bien compris, il veut juste que les gens ne voient pas les contenus des répertoires... il faudrait dont dans un premier temps désactiver le listing automatique des fichiers, puis gerer les erreurs 404, mais ca n'empêchera jamais un utilisateur d'accéder à un fichier si il rentre directement le bon nom dans la barre d'adresse.

une parade consisterait à créer un script PHP qui vérifie le referer, et l'executer en auto prepend
Ancien pseudo : lolo

15

Ah par défaut son Apache affiche la liste des fichiers contenus dans le répertoire ? Pardon, j'avais oublié ce cas-là, et effectivement mettre un index.html est la première chose à faire smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

le referer est facilement spoofable donc c'est pas une solution

17

Zephyr (./15) :
Ah par défaut son Apache affiche la liste des fichiers contenus dans le répertoire ? Pardon, j'avais oublié ce cas-là, et effectivement mettre un index.html est la première chose à faire smile

Ça se change avec les .htaccess ( [Options -indexes ] je crois )
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

18

nEUrOO (./16) :
le referer est facilement spoofable donc c'est pas une solution


à partir du moment ou le mec sait trucer le referer, n'importe quelle solution sera inutile, car si il sait contourner le referer il saura coutourner les autres protections également....

par contre, petite question : c'est pour un site intranet ou un site internet ? car si c'est pour un intranet, ca ne sert à rien de faire des 10aines et des 10aines de protection... désactiver le listing automatique des fichiers, ou juste mettre un index comme je l'ai indiqué en ./12 est largement suffisant il me semble... et simple également à mettre en place car ne nécessite aucune connaissance en htaccess pour un noob wink
Ancien pseudo : lolo

19

De toute façon, si le contenu doit être accessible, ce n'est pas franchement grave si on le récupère de façon tordue....
genre la CSS, c'est pas catastrophique si on y a accès en changeant le referer alors que de toute façon, on doit y avoir accès...

faut juste ne pas mettre les trucs accessibles dans le même dossier que les trucs inaccessibles...
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

20

heureusement que c'est totallement faux ce que tu viens de dire... utiliser un nonce (unique id et que l'on peut pas predire genere a chaque reload par une apps).

seulement, je crois qu'il veut cacher son css ici (c bien le cas?) si ouais, faut voir le comportement avec un css dynamique (php qui genere css -- et protege)

21

nEUrOO (./20) :
heureusement que c'est totallement faux ce que tu viens de dire...


qu'est-ce qui est faut ?
nEUrOO (./20) :
utiliser un nonce (unique id et que l'on peut pas predire genere a chaque reload par une apps).


tu veux dire quoi ? à chaque reload de la page, un id est généré, et vérifié par les fichiers "enfants" (css, img, ...) chargés par cette même page ? car ca c'est craquable facilement...

mais de toute facon, je crois qu'il ne cherche vraiment pas si compliqué... Je pense qu'il veut juste que les utilisateurs evitent de se balader pour rien dans les répertoires de l'applip et en voient le contenu... Donc dans ce cas, ca ne sert à rien de prendre une solution méga compliqué même si elle est hyper performante...
Ancien pseudo : lolo

22

mais de toute façon, le client devra bien récupérer son css, non ? trifus
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

23

ben vi, c'est pour çà que je conseillais juste le coup du index.php qui redirige vers le répertorie parent... comme ca tu ne modifies ni la config apache, ni le site déjà existant (rien ne nous dit qu'il soi dynamique d'ailleurs...), ni tous les répertoires, mais seulement ceux que l'on veut "protéger"...
Ancien pseudo : lolo

24

Spipu (./21) :
tu veux dire quoi ? à chaque reload de la page, un id est généré, et vérifié par les fichiers "enfants" (css, img, ...) chargés par cette même page ? car ca c'est craquable facilement...

pas facilement avec un browser (ou de l'automation utilisant un browser) ce qui limite pas mal...

(ce qui etait faux c'etait le fait que si tu sais changer un referer, tu sais tout contourner...)

25

(j'avais compris plutôt qu'on pouvait tout contourner de façon générale, pas forcément avec uniquement le referer)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

26

Oula je vois que vous avez profitez de ma pause déjeuner pour débattre du sujet. Je vais éclairicir certains point:

- oui c'est pour un intranet, la sécu n'est pas obligatoire mais dans mon jury je m'attends a avoir un prof de sécu donc je préfère mettre une touche de sécu dans mon projet (et en plus ça fait plus propre)

- je m'en fiche que des personnes aient accès aux fichiers en tapant l'URL directement, je veux dire que si l'utilisateur veut voir le contenu des CSS il n'a qu'à chopper l'URI dans le source de la page ou via un addon du style firebug par exemple. Pour ce qui est de mes scripts, je ne mets rien de vital dedans (pour les js) et pour ceux en PHP je les ait protégés par via des $_SESSION.

Moi ce que je veux c'est que pour n'importe quel dossier de l'arbo du site, quand on ne spécifie pas de fichier en particulier, il y ait redirection automatique et propre vers index.php à la racine de mon site. C'est d'une part pour faire plus propre et un poil plus sécurisé (même si ça reste sommaire) et d'autre part pour refouler les curieux.
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

27

y'a pas de solution generale pour ce que tu veux faire vu que ds tous les cas, y'a un client dans l'histoire... donc cf ce que disaients les autres -> interdire le listing, obfuscation des noms al a limite (meme si je trouve ca stupide), tu peux utilser pas mal de URL rewriting pour avoir une arbo logique totalement different de l'arbo que tu as sur ton server etc.

28

je trouve que le index.php est sûrement le plus simple à mettre en place
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

29

Spipu (./12) :
Zephyr (./11) :
Spipu (./10) :
par contre, ca risque pas d'empêcher l'access aux CSS ? (je veux dire par là empêcher une utilisation normale) J'ai pas tester, c'est juste une idée comme ca

Ah c'est sûr, mais si il veut conserver l'accès aux CSS alors ce n'est pas une redirection qu'il faut faire, le plus simple serait juste de rattraper les erreurs 404 et envoyer l'utilisateur sur une page ("ErrorDocument 404 http://www.tonsite.com/index.php").


ok, on est d'accord happy c'est bien ce qu'il me semblait... donc les solutions décrites ci-dessus ne conviendront pas à son cas il me semble, non ?

perso je mettrais juste un fichier index.php comprenant <?php header('location: ../'); ?>


Pour garder le principe du redirect du .htaccess, tu peux faire un


DirectoryIndex http://www.tonsite.com/racine.php

dans le .htaccess en question

et le /racine.php ne fait qu'un

<?php header('location: ../'); ?>


Sinon une erreur 500 est souvent signe d'un .htaccess foireux

Et si c'était une erreur de boucle de redirection, non ça ne serait pas une erreur 500, il y a un numero d'erreur pour ça si j'ai bon souvenirs


Sinon si le but est d'interdire l'indexe des dossier tu peux faire un simple :

Options -Indexes
ErrorDocument 403 /

dans le .htaccess a la racine du site, c'est un peu radical, mais ça marche bien grin (et on peut meme rediriger vers un script PHP pour reagir suivant l'URL qui etait demandé ^^) par contre ça a le meme effet de bord sur le DirectoryIndex, l'URL ne change pas
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

30

Bon j'ai trouvé!

Après quelque recherches supplémentaires et expérimentations j'ai trouvé une bonne solution qui fait exactement ce que je lui demande et qui ne necessite qu'un seul .htacess! De plus si je rajoute des sous dossiers, je n'ai aucune modif à faire ça marche toujours!

Donc en fait j'ai mis à la racine de mon site un fichier .htaccess qui contient:

Options -Indexes
ErrorDocument 403 http://mondomaine/index.php
ErrorDocument 404 http://mondomaine/index.php


Le 403 c'est pour rediriger l'utilisateur quand il veut parcourir un dossier qui existe, et le 404 c'est pareil mais pour les dossiers qui n'existent pas. Les fichiers restent acessibles directement pour peu qu'on sache leur nom (mais ça ça ne me dérange pas).

Voilà, tout beau, tout propre, tout simple, du code comme on l'aime wink

Merci encore de votre participation! En espérant que ça serve à d'autres personnes.

EDIT: Si un admin passe par là, qu'il mette résolu. Merci!
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD