Aller au contenu

Sujets conseillés

Posté (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é par JoP
Posté (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é par Yavuz
Posté

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

Posté

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... ;)

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...