billcom 4 Posted October 13, 2014 Share Posted October 13, 2014 Bonjour à tous , Je voudrais réécrire des url de mon site mais cela entre en conflit avec le fichier routes. Le site utilise le framework Laravel et je fais donc mes belles urls dans le fichier app/routes.php. Il se trouve que j'ai une page qui liste des résultats sur mon site et j'aimerai réécrire cette url via le .htaccess et non le fichier routes. Mon public/.htaccess est le suivant : <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Rewrite url RewriteRule ^(test|test2)/domaine/([a-z0-9\@\&\+\.\_\-]+)-([0-9]+)/?.*$ $1/liste?var=$3 [L] # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> Quand je me rend à l'adresse www.monsite.com/test/domaine/loremipsum-10/ le framework identifie "test" et essaye de charger la fonction domaine du controller test au lieu de réécrire mon url et de me donner le résultat de la page www.monsite.com/test/liste?var=10 En revanche si je met cette ligne dans le .htaccess : RewriteRule ^(test|test2)/domaine/([a-z0-9\@\&\+\.\_\-]+)-([0-9]+)/?.*$ http://www.monsite.com/$1/liste?var=$3 [L] Cela me retourne la bonne page sans problème de route mais je suis redirigé et l'url n'est donc pas réécrite. J'obtiens donc une url de ce type : www.monsite.com/test/liste?var=10 Je crois que la redirection dans ce cas est normale car je met le nom complet du site (>http://www...com) mais je n'en suis pas sûr (les rewriteRule ça me dépasse). Comment faire pour avoir une réécriture de la page sans que le framework cherche à charger la fonction correspondante du controller courant ? Merci par avance Link to post Share on other sites
SStephane 16 Posted October 13, 2014 Share Posted October 13, 2014 Ce n'est pas au fichier htaccess de générer les liens. Ce qui s'affiche dans ta page dépend de la stratégie de génération d'URL de ton framework, en l’occurrence, ton fichier route et certainement une fonction au niveau de ta vue/controller (comme la majorité des framework). Il te faut adapter la route pour que "test/domaine/loremipsum-10" n'appelle pas ton controller test::domaine(), et tu n'as pas à trifouiller dans le htaccess. Je serai étonné -très- que tu ne puisses pas faire cela dans ta route ( on dirait que oui en ayant parcouru en surdiagonale la doc http://docs.laravel.fr/4.2/routing ). Note que je ne connais pas laravel, mais bon... dans tous les frameworks, c'est pareil. Link to post Share on other sites
billcom 4 Posted October 20, 2014 Author Share Posted October 20, 2014 Salut, J'ai modifié ma fonction liste et mon fichier routes de façon à ce que la fonction gère les belles urls et les url types liste?var=... Effectivement je cherchais pas dans le bon sens... C'est réglé maintenant... Merci . Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now