Jump to content
sparh

Transformer chemin d'accès en variable et rediriger

Rate this topic

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

Share this post


Link to post
Share on other 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]

 

 

Share this post


Link to post
Share on other sites

Merci Dan

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

Share this post


Link to post
Share on other 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 ;)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...