Aller au contenu

url rewriting demande d'aide


Sujets conseillés

Bonjour,

Je voudrais transformer une url de ce type :

recherche.php?pays=france&region=ile-de-france&departement=paris

En

recherche-france-ile-de-france-paris.htm

Comment faire ceci car je ne connais rien à l'url rewriting !

PS : je voudrais aussi une url de ce type :

recherche/france/ile-de-france/paris.htm

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

RewriteEngine on
RewriteRule ^recherche/(.+)/(.+)/(.+)\.htm$ recherche.php?pays=$1&region=$2&departement=$3 [L]

est préférable (ta deuxième version) car MSN n'aime pas trop les url avec multiples tirets...

De plus tu n'aura pas de problème avec les tirets dans les variables pays, region, et departement.

Lien vers le commentaire
Partager sur d’autres sites

Ne pas oublier que dans l'exemple donné par Jeroen, on crée des "répertoires virtuels"...

On fait croire au navigateur que la page paris.htm se trouve dans le répertoire recherche/france/ile-de-france/ alors qu'elle n'y est pas bien évidemment.

Donc tous les liens relatifs seront résolus à partir de ce répertoire.

C'est à dire qu'il faudra n'utiliser que des liens absolus, ou alors utiliser la balise <base href="..."> dans le document recherche.php ;)

Sinon, plus d'images, plus de CSS, une page incomplète. ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Merci Dan et jeroen pour votre aide !

Alors Dan peux tu être plus précis ? car je ne m'y connais pas trop :( que veux tu dire par "liens absolus" ou par "<base href="...">" :(

Car j'y avais pas pensé au css et aux images ... :)

Je veux bien utiliser la solution de jeroen mais j'aimerais avoir plus d'informations sur ce que à dit Dan ;)

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

J'avais zappé ta demande ;)

Un lien absolu est un lien sous la forme &quot;http://domaine.tld/rep/fichier" ou encore un lien interne faisant référence à un fichier serveur au départ de la racine, par exemple "/home/login/www/rep/fichier" (commençant par / )

Sinon, l'utilisation de <base href="..."> est plus simple, car il suffit de donner l'URL réelle du fichier après réécriture, c'est à dire dans ton cas :

<base href=&quot;http://domaine.tld/recherche.php">

A mettre dans l'entête , entre <head> et </head>

Cela donne le chemin à partir duquel il faut résoudre les liens relatifs.

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Bonjour,

Merci Dan j'ai pu testé et ca marche très bien.

Mais il y a un problème :(

Quand je mes dans mon .htaccess

RewriteRule ^recherche/(.+)\.htm$ recherche.php?pays=$1 [L]
RewriteRule ^recherche/(.+)/(.+)\.htm$ recherche.php?pays=$1&region=$2 [L]

et que j'arrive sur la page recherche et que je clique sur France alors j'ai bien une adresse du type :

http://mon-site.com/recherche/france.htm

et quand je clique sur une des régions de france par exemple ile-de-france et ba cela ne marche pas ! il me renvoie vers

http://mon-site.com/recherche.php%3E

Et il me dit que le document n'a pas été trouvé sur le serveur :(

Et si j'enleve cette ligne de mon .htaccess

RewriteRule ^recherche/(.+)\.htm$ recherche.php?pays=$1 [L]

Alors la ca marche !

j'ai mis dans mon head :

<base href="http://mon-site.com/styles.css">
<base href="http://mon-site.com/recherche.php">

Jespere que quelqu'un va m'aider :)

Merci d'avance

PS : dans mon code source je pointe bien vers des liens du type :

http://mon-site.com/france/ile-de-france

j'espere avoir été clair :)

Modifié par Static6000
Lien vers le commentaire
Partager sur d’autres sites

Il ne faut pas mettre la ligne:

<base href="http://mon-site.com/styles.css">

Parce que ton fichier est recherche.php et non style.css, non ? :)

Et à mon avis, il faut inverser tes deux règles parce que (.+) va aussi matcher le / de tes régions.

Donc il faut mettre cette règle en premier :

RewriteRule ^recherche/(.+)/(.+)\.htm$ recherche.php?pays=$1&region=$2 [L]
RewriteRule ^recherche/(.+)\.htm$ recherche.php?pays=$1 [L]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Et pourtant l'article est facile à trouver !

Il se trouve là : http://www.webmaster-hub.com/publication/article5.html

L'URL n'a pas changé depuis 2 ans :)

Dan

PS: tu es sûr que tu veux convertir page.php en page.htm ? :huh:

Si oui, voici la règle :

RewriteRule (.+)\.php $1.htm [L]

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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