sparh Posté 20 Décembre 2015 Partager Posté 20 Décembre 2015 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 20 Décembre 2015 Partager Posté 20 Décembre 2015 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] Lien vers le commentaire Partager sur d’autres sites More sharing options...
sparh Posté 20 Décembre 2015 Auteur Partager Posté 20 Décembre 2015 Merci Dan avant de tester ta solution je me fais tout le dossier que tu as précédemment cité Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 20 Décembre 2015 Partager Posté 20 Décembre 2015 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
sparh Posté 20 Décembre 2015 Auteur Partager Posté 20 Décembre 2015 Ça marche parfaitement en effet merci Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant