Url Rewriting + récupération GET

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

lnsou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 26 Jan 2010

Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 14:01

Bonjour,

D'habitude j'arrive a m'en sortir en cherchant sur le forum mais là, je coince, j'ai donc décidé de m'inscrire pour vous posez la question :p

Alors enfaite je voudrai récupéré les variables passé en GET pour les réécrire dans l'url..

Exemple :

index.php
Code: Tout sélectionner
<form action="index.php" method="GET">
<input type="text" name="recherche"><br>
<input type="submit" name="Recherchez" value="Recherchez">
</form>


Lorsque j'envoi, je voudrais me retrouver avec une url de ce type : http://www.monsite.com/la_valeur_du_champs_recherche

donc $_GET['recherche']

J'ai fais des tonnes de test et j'ai l'impression de tourné en rond :s pourtant ça doit pas être bien compliqué..

Une idée ? une piste ? une solution ? :oops:
Dernière édition par lnsou le Mar Jan 26, 2010 18:39, édité 1 fois.

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 15:54

bonjour et bienvenue,

si la question est de savoir comme passer de index.php?recherche=une-valeur à -http://monsite.com/recherche/une-valeur la réponse se trouve dans le javascript, donc remplacer le action="index.php" par action="javascript:traitement_formulaire()" et de traiter la soumission du formulaire dans le script avec des getElementById, et un self.location = 'recherche/....';

Inconvénient de la méthode si le javascript est désactivé le formulaire de fonctionne pas !

Autre question à se poser : est-ce utile de réécrire ce genre de requête ?

lnsou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 26 Jan 2010

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 16:18

Sullyvan a écrit:bonjour et bienvenue,

si la question est de savoir comme passer de index.php?recherche=une-valeur à -http://monsite.com/recherche/une-valeur la réponse se trouve dans le javascript, donc remplacer le action="index.php" par action="javascript:traitement_formulaire()" et de traiter la soumission du formulaire dans le script avec des getElementById, et un self.location = 'recherche/....';

Inconvénient de la méthode si le javascript est désactivé le formulaire de fonctionne pas !

Autre question à se poser : est-ce utile de réécrire ce genre de requête ?


Euhh, pas besoin d'un sous répertoire "recherche" ...
Par contre la solution du javascript me semble plus bancal qu'autre chose..(la raison du javascript désactivé)..

J'ai d'ailleurs testé de désactivé le javacript et de testé sur un site qui fait ce que je voudrais faire..Et ca marche quand même donc il ne doit pas se servir du javascript ;)

J'pense que ca doit pas être bien compliqué de faire ca avec l'url rewriting.. nan ?

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 16:42

Ce n'est pas compliqué au niveau du rewriting c'est le formatage de l'url qui est délicat en fait.

Sans passer par du javascript, je pense que la méthode suivant doit marcher:
1- soumission du formulaire vers une page qui créé l'url
Code: Tout sélectionner
<?php header('location: /'.$_GET['recherche']); ?>


2- le rewriting classique (version bourrin)
Code: Tout sélectionner
RewriteRule ^([A-Za-Z0-9])$ recherche.php?rechercher=$1 [NC]


Je veux bien l'url du site avec l'exemple pour voir comment ils font.

lnsou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 26 Jan 2010

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 17:02

L'url du site est : http://ineedfile.com , après fait une recherche et c'est ce résultat là que j'cherche a avoir :/

J'ai essayé ton bout de script : Erreur 500 .. même en essayant de l'adapté...pareil :/

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 17:20

la méthode de soumission du formulaire est la même que ce que je t'ai décrit plus haut.

j'ai oublié un + dans la formule magique
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^([A-Za-z0-9]+)$ recherche.php?rechercher=$1 [NC]


ça fonctionne comme ça ?

lnsou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 26 Jan 2010

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 18:44

Déjà j'ai plus l'erreur 500.. mais l'url reste la même :/

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 19:04

j'ai testé et ça fonctionne.

je résume:
1- le formulaire
Code: Tout sélectionner
<form action="formater-url.php" method="GET">
<input type="text" name="recherche"><br>
<input type="submit" name="Recherchez" value="Recherchez">
</form>


2- formater-url.php
Code: Tout sélectionner
<?php header('location: '.$_GET['recherche']); ?>


3- le fichier .htaccess
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^([A-Za-z0-9]+)$ recherche.php?q=$1 [NC]


4- recherche.php
Code: Tout sélectionner
<?php echo $_GET['q']; ?>


avec en 2 une fonction qui nettoie $_GET['recherche'] pour n'avoir que les caractères autorisés

lnsou
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 26 Jan 2010

Re: Url Rewriting + récupération GET

Message le Mar Jan 26, 2010 21:09

Ah niquel, j'ai testé, ca marche, par contre..

Code: Tout sélectionner
<?php header('location: '.$_GET['recherche']); ?>


c'est pas plutot :

Code: Tout sélectionner
<?php header('location: recherche.php?q='.$_GET['recherche']); ?>


En faite, si je laisse le premier : ca me donne bien une url comme je veux par contre, 404 not found (normal)..
C'est pourquoi recherche.php est là...
donc j'ai remplacé par le 2eme et là ça ne réécrit plus mais j'arrive bien sur recherche.php avec l'echo de $_GET['q']

il est censé réécrire recherche.php?q=$1 par $_GET['q'] nan ?


[edit]
En faite, j'ai rien dit, ca marche, mais seulement avec un mot..si je sépare par un espace, tiret, trait ==> 404
J'pense que c'est juste dans le htaccess ou il faut autorisé les caractères, j'ai pas le temps de regarder ce soir mais j'm'y replonge demain..et j'reviens faire un p'tit retour :p
[/edit]

[edit2]
Enfaite c'était bien _a.. j'ai rajouté le '-' comme caractères autorisé et hop c'est bon :D

la ligne du htaccess est maintenant :

Code: Tout sélectionner
RewriteRule ^([A-Za-z0-9-]+)$ recherche.php?q=$1 [NC]


Encore merci pour ton aide :)
[/edit2]


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités