Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

Posté

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

Posté

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

Posté

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

  • 2 semaines plus tard...
Posté (modifié)

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
Posté

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]

Posté

Une derniere quéstion :)

Comme je retrouve plus l'article sur l'url rewriting sur webmaster-hub je voudrais savoir comment faire pour réécrir :

page.php en page.htm

Merci d'avance

Veuillez vous connecter pour commenter

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



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