sparh Posté 20 Décembre 2015 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
Dan Posté 20 Décembre 2015 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]
sparh Posté 20 Décembre 2015 Auteur 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é
Dan Posté 20 Décembre 2015 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant