Aller au contenu
sparh

Transformer chemin d'accès en variable et rediriger

Noter ce sujet :

Recommended Posts

Bonsoir,

jusqu'ici j'utilisais la règle ci-dessous pour rediriger mes fichiers vers une page php.

RewriteRule Fichiers/(.*)/(.*) /Fichiers/check_connect.php?dossier=$1&url=$2 [QSA,L,R=301]

Un appel de monsite.com/Fichiers/Documents/fichier.doc est donc redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents&url=fichier.doc

 

Mon problème c'est que ce système ne gère pas les sous-dossier

Je souhaiterai savoir s'il est possible de transformer le chemin d'un fichier en variable ?

 

Par exemple  

monsite.com/Fichiers/Documents/Sous-Dossier/fichier.doc devrait être redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents/Sous-Dossier&url=fichier.doc

monsite.com/Fichiers/Documents/Sous-Dossier/Sous-Dossier/fichier.doc devrait être redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents/Sous-Dossier/Sous-Dossier/&url=fichier.doc

 

Il faut préciser que je ne connais ni le nom des dossiers, ni leur nombre ni leur profondeur (combien de sous-dossier)

 

Auriez-vous une idée de comment faire ça avec une redirection htaccess et si c'est seulement possible ?

 

Merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Quelque-chose comme ceci :

RewriteRule Fichiers/(.*)/([^/]*) /Fichiers/check_connect.php?dossier=$1&url=$2 [L]

La valeur [^/]* du second argument donnera un match pour toute chaîne ne comprenant pas de '/'

Précédé d'un / dans l'expression pour isoler le dernier mot, cela devrait donc te donner la valeur de la variable url.

Le premier argument prendra tout le début de la chaîne, donc la valeur de la variable dossier.

 

C'est non testé, mais on ne devrait pas être loin de la vérité !

 

Attention au R=301, qui va forcer de re-passer dans le fichier .htaccess .... pas top, et inutile !

Ce n'est pas l'expression /check_connect.php?dossier=Documents/Sous-Dossier/Sous-Dossier/&url=fichier.doc  que tu veux voir indexer par les moteurs.

Le flag QSA est inutile aussi vu que c'est ta règle qui génère le QUERY_STRING ! Il ne doit donc pas être ajouté automatiquement.

 

Comme flag, je mettrais seulement [L]

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Dan

avant de tester ta solution je me fais tout le dossier que tu as précédemment cité :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce n'est pas utile dans ton cas. Tu n'as pas besoin de récursivité, vu que tu mets toute la chaine à part le nom du fichier dans une seule variable.

 

Je viens de tester, l'exemple donné plus haut fonctionne parfaitement ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×