JoP Posté 14 Juillet 2010 Posté 14 Juillet 2010 (modifié) Bonjour à vous, J'espère que vous allez bien. Je travaille présentement sur un site sur lequel on retrouvera une page profil pour plusieurs artistes. J'aimerais pouvoir créer une redirection qui permettrait aux visiteurs d'utiliser une url écourtée pour accéder au profil d'un artiste. Donc, j'aimerais avoir une url dans ce genre: http://www.monsite.com/nom-de-l-artiste J'ai donc écrit la règle suivant dans mon fichier .htaccess RewriteRule ^(.*)$ /index.php?page=$1 [L] Mon fichier index.php récupère la variable "page" et la retrouve dans ma base de données pour ensuite rediriger le visiteur vers la bonne page. Par contre, avec la règle que j'ai écrite, la variable ne passe pas, et je reçois une erreur 404... et je ne trouve pas la solution.. alors j'ai besoin de votre aide. Est-ce que j'ai une erreur dans ma règle. Je ne suis pas un expert dans la réécriture d'url ni dans les expressions régulières mais la règle me semble logique; alors je ne comprend pas. J'apprécierais énormément que quelqu'un m'éclaire sur ce sujet. Merci d'avance! Jonathan P. Modifié 14 Juillet 2010 par JoP
Yavuz Posté 15 Juillet 2010 Posté 15 Juillet 2010 (modifié) Salut Jop, Normalement dès qu'il s'agit d'une variable il faut utiliser RewriteCond pour la réécriture. Après, je peux me tromper aussi. Essaye ceci dans ton htaccess : RewriteCond %{QUERY_STRING} ^page=(.*)$ RewriteRule ^index\.php$ http://www.monsite.com/$1? [L,R=301] Même si pour ton cas cela ne fonctionne pas, creuse la chose avec RewriteCond. Modifié 15 Juillet 2010 par Yavuz
JoP Posté 19 Juillet 2010 Auteur Posté 19 Juillet 2010 Merci! J'ai essayé quelques trucs avec RewriteCond, mais je ne suis pas sûr de comprendre le fonctionnement de cette fonction. D'autant plus que si j'écris une url avec une barre oblique à la fin, la redirection fonctionne à merveille avec RewriteRule.... Je vais continuer de fouiner pour en apprendre plus sur RewriteCond.. Merci encore! Jonathan
Remi Posté 20 Juillet 2010 Posté 20 Juillet 2010 Il n'y a pas d'erreur dans ta ligne, si ce n'est que, utilisée seule, elle devrait te générer une erreur 500 car elle va tourner en rond: Il faut impérativement écarter les index.php RewriteCond %{REQUEST_URI} !^/index\.php$ [NC]RewriteRule ^(.*)$ /index.php?page=$1 [L] Là on dit : si ce n'est pas 'index.php...' qui est demandé, alors on transforme l'URL. Si tu as une erreur 404 (et non une 500), je pencherais plutôt pour dire que la ligne n'est tout simplement pas exécutée... Il y a bien un 'RewriteEngine on' dans le .htaccess ? Le fichier .htaccess est-il au bon endroit ? etc...
JoP Posté 22 Juillet 2010 Auteur Posté 22 Juillet 2010 Merci beaucoup Remi! J'ai réussi à faire ce que je voulais faire avec la ligne que tu m'as donné, mais avec cette ligne, les autres url de mon site ne sont pas réécrites correctement et le site ne s'affiche donc plus comme il le doit... Mais merci quand même, tu m'as aidé à avancer dans mon problème, je vais continuer de creuser le sujet...... Jonathan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant