Url Rewriting marche à moitié

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Url Rewriting marche à moitié

Re: Url Rewriting marche à moitié

par yoann38 » 30 nov. 2015, 21:27

Re,
Donc j'essai toujours de m'en sortir avec ce formulaire.

J'ai donc modifier mon htaccess.
Pas de problème de ce coté la

Et coté script php
J'ai donc modifier mon champ action comme conseillé en faisant donc ceci:
En Gros si un département est selectionné alors on agit sur la page suivant le département sinon on prend la page par default.
PS: Le problème c'est que actuellement j'ai récupère le département dans mon champ action au moment de l'envoi il faudrait que je le récupère au clik ou autrement.....
Comment procéder svp ?
Ou une autre méthode ?
<form id="choice" name="liste deroulante" method="post" action="<?php if (empty($_POST['departement'])) echo $_SERVER['REQUEST_URI']; else { echo '/toutes-les-sorties-du-departement-'.$_POST['departement'].'.html'; } ?>">
    
            		<div class="col-md-3 col-sm-3 max">
                            <?php // Gestion des variables des départements
                            $region = !empty($_SESSION['membre']['id_region']) ? simplification($aRegion[$_SESSION['membre']['id_region']]) :NULL;
                            $region = !empty($_REQUEST['region']) ? $_REQUEST['region'] : $region; /* Si la region est renseigné dans l'url il est prioritaire */
                            $departement = !empty($_SESSION['membre']['id_departements']) ? $_SESSION['membre']['id_departements'] : NULL;
                            $departement = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : $departement; /* Si le departemebt est renseigné dans l'url il est prioritaire */
                            ?>

                            <select name="departement" id="departement" class="selectpicker max" data-region="<?php echo $region; ?>">
                            <option value="">Votre département</option>
                            <?php echo aRegionDepartement($region, $departement); ?>
                            </select>
En fouillant un peu j'ai trouvé ceci:
<select onchange="alert(this.options[selectedIndex].value);" name="departement" id="departement" class="selectpicker max" data-region="<?php echo $region; ?>">
Donc en faisant un alert ca marche le tout est de savoir comment associer ce on change avec mon champ action de mon formulaire ?

Re: Url Rewriting marche à moitié

par yoann38 » 30 nov. 2015, 00:05

C'est à ma portée ca.

Dans mon <h1> par exemple j'ai modifié mon code est rajouté cette ligne:
$h1 .= !empty($_REQUEST['departement']) ? ' <a href="toutes-les-sorties-du-departement-'.$_REQUEST['departement'].'.html"> '.$depts[$_REQUEST['departement']].'</a>': NULL; // Le département
Du coup on a un lien sur le h1
Et j'aimerais que lorsque l'utilisateur selectionne via la liste déroulante le département qu'il soit redirigé en fonction sur l'url qui correspond.
Si possible j'aimerais faire pareil avec les commune mais ne vois pas du tt comment ?

Re: Url Rewriting marche à moitié

par or 1 » 29 nov. 2015, 22:57

tu as sur la fiche d'une sortie :
278 annonces pour savoir ou sortir - Rhône-Alpes - Isère
il te reste plus qu'à ajouter les liens sur Rhône-Alpes et sur Isère, et pour les communes qui ont plus d'un certain nombre d'événements, la ville avec son lien.

Re: Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 22:52

Bon je vois que tu ma compris mais j'ai du mal à me lancer pourtant ce n'est pas l'envie qui me manque.
Je ne vois pas comment partir.
Ta tout dis departement et commune c'est ce que je vise
...

Re: Url Rewriting marche à moitié

par or 1 » 29 nov. 2015, 22:50

tu te compliques la vie pour rien. google na va pas valider ton formulaire. tu le passes en get vers une url fixe, et tu auras des paramètres, ce qui n'est pas gênant, car seuls des humains verront ces liens.

dans la page d'une sortie, tu ajoutes un fil d'ariane, ce qui te permettra d'avoir un lien vers les sorties d'une région, un lien vers les sorties du département voir un lien vers les sorties de la commune.

Re: Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 22:26

Salut à toi Or, merci de ton investissement. Tu a tout à fait compris ce que je souhaitais.
les redirections et bien sur l'indexation par les robots.
Peut tu m'aider sur le sujet afin de partir sur les bonne base stp

Actuellement le code source de liste généré nous donne quelque chose comme:
<select name="departement" id="departement" class="selectpicker max" data-region="">
                            <option value="">Votre département</option>
                            <optgroup label="Alsace">
<option value="67">67 - Bas-Rhin</option>
<option value="68">68 - Haut-Rhin</option>
</optgroup>
Peut on par exemple récupérer le contenu de value
Et après comparer dans un tableau si ca vaut 67 = alors bas-rhin .....

Après pour la redirection et tout la je ....

Sinan dans ma page recherche actuellement je récupérer le nom du département choisi par l'utilisateur avec:
$h1 .= !empty($_REQUEST['departement']) ? ' - '.$depts[$_REQUEST['departement']]: NULL; // Le département
Je souhaite partir sur de bonne base pour pas me perdre, merci de ton aide :wink:

Re: Url Rewriting marche à moitié

par or 1 » 29 nov. 2015, 22:02

<form id="choice" name="liste deroulante" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
c'est donc normal que cela renvoie vers la mêm url.
il faut donc changer en javascript le champ action de ton formulaire selon la selection des listes.

mais le plus simple, c'est de renvoyer ton formulaire vers /recherche par exemple, et de faire des liens vers les urls /toutes-les-sorties-en-region-rhone-alpes-du-departement-38.html dans tes pages pour que les moteurs les trouvent et puissent indexer ces urls.
un moteur ne va pas indexer une url en méthode post.

Re: Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 21:09

Donc en fait voilà je vais essayer d'etre plus clair.
PS: J'ai créer 2 sujets différents car c'est éventuellement 2 solutions différentes, j'espère avoir bien fait.

Donc pour mon htaccess., tout marche très bien sauf une ligne
Mon code est:
#--------------------------------------------------
# R�gles de réécriture d'URL :
#--------------------------------------------------

# Recherche
RewriteCond %{QUERY_STRING} ^q=
RewriteRule ^(index\.php)?$ recherche.php [L] 

RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html$ sortie.php?region=$1&departement=$2
RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+).html$ sortie.php?region=$1
RewriteRule ^toutes-les-sorties-du-departement-([0-9]{2}).html$ sortie.php?departement=$1
RewriteRule ^toutes-les-sorties.html sortie.php
#RewriteRule ^([A-Za-z0-9_-]+).html$ $1.php
Et la ligne qui marche pas est:
RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html$ sortie.php?region=$1&departement=$2

Par contre en tapant l'url ca marche
http://lasortie.fr/toutes-les-sorties-e ... nt-38.html
Mais moi je souhaite que le filtre de ma liste déroulante renvoi du coup sur la bonne url
mais il reste toujours sur la meme page.

Code de la liste déroulante:
<form id="choice"  name="liste deroulante" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
                
            		<div class="col-md-3 col-sm-3 max">
                            <?php // Gestion des variables des départements
                            $region = !empty($_SESSION['membre']['id_region']) ? simplification($aRegion[$_SESSION['membre']['id_region']]) :NULL;
                            $region = !empty($_REQUEST['region']) ? $_REQUEST['region'] : $region; /* Si la region est renseigné dans l'url il est prioritaire */
                            $departement = !empty($_SESSION['membre']['id_departements']) ? $_SESSION['membre']['id_departements'] : NULL;
                            $departement = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : $departement; /* Si le departemebt est renseigné dans l'url il est prioritaire */
                            ?>
                            
                            <select name="departement" id="departement" class="selectpicker max" data-region="<?php echo $region; ?>">
                            <option value="">Votre département</option>
                            <?php echo aRegionDepartement($region, $departement); ?>
                            
                            </select>

Re: Url Rewriting marche à moitié

par moogli » 29 nov. 2015, 15:58

salut,

tu peux mettre de alternative dans ton expression régulière et du coup chercher
toutes-les-sorties-du-departement-([0-9]{2} ou un chaine de caractère).html

cela te permet d'avoir un seul script derrière (a toi de vérifier si c'est une chaîne de caractère ou des chiffres.

Juste au passage tu es au courant qu'il y a des départements à trois numéros (DOM) et des départements avec des lettres (corse) ? :)

@+

Re: Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 12:43

Donc je continue d'essayer de trouver une solution à mon problème afin d'avoir une page du type:
lasortie.fr/toutes-les-sorties/isere.html

lasortie.fr/toutes-les-sorties/bordeaux.html ( bah oui faut adapter ça au villes aussi )

Donc pour les département j'ai fait ceci:
RewriteRule ^toutes-les-sorties-du-departement-([0-9]{2}).html$ sortie.php?departement=$1

Ce qui marche pour une url:
lasortie.fr/toutes-les-sorties-du-departement-38.html

Mais je souhaite le nom du département et pas son numéro
Et comment adapter également pour les villes ???

Ma requete pour affiche mes annonces sur l'autre page est la suivante:
$_REQUEST['departement'] = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : NULL;
	$_REQUEST['departement'] = !empty($_SESSION['membre']) && empty($_REQUEST['departement']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_departements'] :$_REQUEST['departement'];
	
    $sql = "SELECT * FROM `loisirs`  JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
	
  	$sql .= !empty($_REQUEST['region']) ? ' AND `regions`.`url` = "'.$_REQUEST['region'].'"' : NULL;
    $sql .= !empty($_REQUEST['departement']) ? ' AND `loisirs`.`id_departements` = '.$_REQUEST['departement'] : NULL;
    $sql .= !empty($_REQUEST['loisir']) ? ' AND `loisirs`.`id_type_loisirs` = "'.$_REQUEST['loisir'].'"' : NULL;

Re: Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 11:53

Mais c'est au niveau de l'indexation ou je bloque.
Je tape google " sortir en rhone alpes" on me trouve et si je tape "sortir en isère" on me trouve pas.
La page existe depuis plusieurs mois.
Exemple sortir en rhone alpes:
http://lasortie.fr/toutes-les-sorties-e ... alpes.html
la balise title donne Sortir en Rhône-Alpes

Si je tape sortir en isère on ne me trouve pas.
J'ai ma page selon mes filtres qui affiche la bonne balise title exemple : <title>Tous les bons plans pour sortir en Isère - lasortie.fr</title>

Mais le problème vient peut etre du à l'url rewriting.
parceque le l'url ne change pas elle reste torjours http://lasortie.fr/sortie.php

Si vous pouvez essayer avec différents département svp afin de vous rentre compte du problème éventuel.
Merci encore ;)

Re: Url Rewriting marche à moitié

par or 1 » 29 nov. 2015, 01:34

toutes-les-sorties-en-region-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html
toutes-les-sorties-en-region-rhone-alpes/isere.html
pas de correspondance donc cela ne peut pas marcher
toutes-les-sorties-en-region-rhone-alpes-du-departement-38.html sera mieux pour valider la règle.

Url Rewriting marche à moitié

par yoann38 » 29 nov. 2015, 01:16

Salut j'ai mon code qui permet de ré écrire mon url en fonction du choix fait par l'utilisateur
Ca marche très bien pour la région mais pas pour le département .....

htaccess.
#--------------------------------------------------
# R�gles de réécriture d'URL :
#--------------------------------------------------

# Recherche
RewriteCond %{QUERY_STRING} ^q=
RewriteRule ^(index\.php)?$ recherche.php [L] 

RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html$ sortie.php?region=$1&departement=$2
RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+).html$ sortie.php?region=$1
RewriteRule ^toutes-les-sorties.html sortie.php
#RewriteRule ^([A-Za-z0-9_-]+).html$ $1.php
Ca va pas beaucoup vous aidé mais peut etre à comprendre comment ma page est construite.
Voici par exemple pour récupérer mon titile
// Title
	$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
	$titre = !empty($_REQUEST['region']) ? " Sortir en ".$aRegion[$region_id] : 'Tous les bons plans pour sortir'.$aDepartement[$_REQUEST['departement']]; // Sortir en "nom de la région"
	$titre .= !empty($_REQUEST['loisir']) ? " - ".$aLoisirs[$_REQUEST['loisir']] : NULL; // Choix du type d'évènement
	$titre .= !empty($_REQUEST['departement']) ? ' en '.$depts[$_REQUEST['departement']] : NULL; // Le département
Donc ca marche pour par exemple:
http://site.fr/toutes-les-sorties-en-re ... alpes.html

Mais je n'arrive pas a rajouté du coup le département à la suite genre:
http://site.fr/toutes-les-sorties-en-re ... isere.html
Merci encore