Problème dossier photo protégé + URLRewriting + ErrorDocument

0takon

Nouveau WRInaute
Bonjour à tous,

Je me décide à demander de l'aide finalement car ça fait quelques heures que je bloque sur la syntaxe de mon .htaccess

Alors voilà j'ai un site dont l'accès est sécurisé par Session php.
J'ai voulu protéger un répertoire contenant des photos pour qu'on ne puisse pas afficher une photo avec l'url directe sans avoir de session ouverte. Pour cela pas de problème :
J'ai un fichier index.php qui vérifie si l'utilisateur est loggé et qui renvoie la photo si oui.
J'ai un fichier htaccess qui ne permet l'ouverture que du index.php?file=$ comme ceci :

Code:
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !index\.php$
RewriteRule ^(.*)$ index.php?file=$1 [L]
ErrorDocument 404 erreur.php

Le résultat :
L'acces à un fichier (existant) par l'URL : http://www.mon-site.com/repertoire/image.jpg
> Renvoie une erreur 404 avec redirection de l'hébergeur (1&1) :(
> Je voudrais bien-sûr qu'il pointe sur mon "erreur.php" mais au moins l'acces direct au fichier n'est pas permis :) (ce que je souhaitais)

L'URL : http://www.mon-site.com/repertoire/index.php?file=image.jpg
> Affiche l'image si utilisateur loggé / formulaire de log sinon :)

En gros j'ai obtenu ce que je voulais mais je souhaiterais ajouter en prime :
> La redirection des erreurs vers ma page d'erreur perso
> Réécrire l'url type repertoire/index.php?file=mon_fichier.ext en /repertoire/mon_fichier.ext

J'arrive à réécrire l'url quand je n'ai pas la ligne
Code:
RewriteRule ^(.*)$ index.php?file=$1 [L]
mais mon système de protection ne fonctionne plus du tout.

Est-ce que quelqu'un à une idée sur l'erreur que je commets ou possède un code proche de ce que je souhaite faire.

Merci d'avance.
 

forty

WRInaute passionné
j'écrirais plutôt avec un l'url absolue de ton fichier erreur.php sinon il risque de chercher dans /repertoire pour une image /repertoire/uneimage.jpg :
Code:
ErrorDocument 404 /erreur.php
 

0takon

Nouveau WRInaute
Merci pour ta réponse forty.
Alors en fait j'ai résolu le problème de la redirection 404 en plaçant un .htacess avec
Code:
ErrorDocument 404 /erreur.php
dans le dossier racine de mon site.

Par contre le problème principal que je posais était de réécrire l'url : /repertoire/index.php?file=mon_fichier.ext en un autre sans variable GET ?file. Du genre repertoire/mon_fichier.ext ou repertoire/fichier-mon_fichier.ext

Je continue de chercher...

Merci d'avance.
 

forty

WRInaute passionné
Si tu ne souhaites réécrire que pour une extension tu peux mettre par exemple :
Code:
RewriteEngine On
RewriteRule ^repertoire/(.*)\.ext$ /repertoire/index.php?file=$1.ext [L]
 

0takon

Nouveau WRInaute
D'accord oui mais justement l'objet de ce post, c'est que la réécriture ne semble pas fonctionner.
Peut importe la règle j'ai toujours l'url : repertoire/index.php?file=mon_fichier.ext
JE rappelle qu'il y a un htacess dans le répertoire racine pour l'erreur 404
et une autre dans le répertoire "repertoire" avec ce code :
Code:
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !index\.php$
RewriteRule ^(.*)$ index.php?file=$1 [L]

Mon but est de réécrire l'url de /repertoire/index.php?file=mon_fichier.ext en /repertoire/mon_fichier.ext

Le schéma c'est :

Accès à : /repertoire/mon_fichier.ext
\/
Renvoi à /repertoire/index.php?file=mon_fichier.ext pour tester la session PHP

Voyez-vous un souci avec le code ci-dessus ?
Merci.
 

Discussions similaires

Haut