Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-11-2007 13:57:44

Aurelien
Membre
Date d'inscription: 22-03-2007
Messages: 11

Référencement : utilisation d'url récrite avec le ZF ?

Bonjour @ tous,

Je pensais mettre en place, dan smon module de gesiton de spages, la possibilité de récrire les url avec l'url rewriting via le .htaccess.

Ca marche très bien, et j'ai ainsi accès à mes pages par :

http://www.monsiteZF.com/ma-page-avec-d … -cles.html qui en fait est une réécriture d'url vers
http://www.monsiteZF.com/page/affiche/id/1/

Seul problème, ça fait 2 redirecitons en fat, et je pense que Google en voyant ça, considère la première URL comme une redirection de type 302

D'ailleurs, en utilisant des logiciels de généraiton de SITEMAP (XML), ça me vire carrément ces urls...

Avez-vous une idée ?

Hors ligne

 

#2 08-11-2007 14:58:56

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Référencement : utilisation d'url récrite avec le ZF ?

Bonjour,

A priori, t'es pas obligé de faire une redirection 302, tu peux faire une simple réécriture ?

Sinon l'autre solution est de traiter tes URL http://www.monsiteZF.com/ma-page-avec-d … -cles.html avec le ZF directement, on peut imaginer un plugin qui intercepte ces URL et qui choisit les bons controlleur, action et paramètre en fonction de l'URL fournie.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 28-11-2007 20:13:27

Aurelien
Membre
Date d'inscription: 22-03-2007
Messages: 11

Re: Référencement : utilisation d'url récrite avec le ZF ?

Salut Philippe, merci pour la réponse.
En fait, je veux pas faire de redirection 302, mais vu que tout passe par le bbotstrap index.php, et qu'il y a déjà une interception a cause du rewrite cond,  la réécriture simple d'url fonctionne visuellement, mais côté moteur de recherche, ça ne semble pas correct...

Sinon, peux tu developper un peu plus ton idée de plugin ?

Merci d'avance,

Aurélien.

Hors ligne

 

#4 11-01-2008 10:10:10

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Pour ceux que ça intéresse, voici un article qui traite de la réécriture d'URL pour le SEO.  L'article provient de la devzone de Zend donc en anglais... c'est un peu hard à assimiler mais s'y j'aboutis sur quelque chose qui fonctionne, je reviendrais poster la méthode pour mettre en place un "plugin d'URL-rewriting".

Hors ligne

 

#5 11-01-2008 11:25:57

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Avec le zend framework la seul règle de réécriture qu'il faut est celle vers index.php car le frontController utilise l'url saisie, pas l'url rewrité.
Donc ce que je te conseille pour avoir des jolies URLS (perso j'en ai fait des magnifiques vraiment optimisé SEO) c'est de les réécrire directement en php.
Il suffit de bien utiliser le routeur en écrivant des règles avec Zend_Controller_Router_Route_Regex. Cela revient au même que de passer par un htaccess...

Hors ligne

 

#6 11-01-2008 11:47:19

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Référencement : utilisation d'url récrite avec le ZF ?

Yes je confirme, Zend_Controller_Router_Route_Regex est vraiment charmant xD

Hors ligne

 

#7 11-01-2008 11:52:53

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Et perso j'ai créer un helper Urlize qui formate du texte en jolie-mot-avec-des-tirets-sans-accent et une autre version en Filter bien plus élaboré qui permet de limiter le nombre de mots et de censuré des mots

Voici juste le code du Helper assez simpliste

Code:

class Rx_View_Helper_Urlize {
    public function urlize($string) {
        return $this->dasherize($this->alphaize($string));
    }
    
    protected function dasherize ($string) {
        $search = array('/\W+/', '/-[a-zA-Z]-/', '/--+/', '/^-+/', '/-+$/' ); 
         $replace = array( '-', '-', '-', '', '');
        return trim(preg_replace($search, $replace, $string), '-');
    }
    
    protected function alphaize($string) {
        $accents  = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ');
        $noaccents= array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','O','O','U','U','U','U','Y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y');
        $i=0;
        foreach($accents as $a) $string = str_replace($a,$noaccents[$i++],$string);
        return strtolower($string);
    }
}

Si vous êtes intéressez par mon Filtre plus puissant, faites le moi savoir je le mettrais à dispo.

PS: pour la méthode alphaize(), j'ai utilisé un vieux foreach à la place d'un strtr() car ca piné chez moi pas moyen de trouver pourquoi...

Hors ligne

 

#8 11-01-2008 14:38:31

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Code:

protected function alphaize($string) {
        $accents  = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ');
        $noaccents= array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','O','O','U','U','U','U','Y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y');
        $i=0;
        foreach($accents as $a) $string = str_replace($a,$noaccents[$i++],$string);
        return strtolower($string);
    }

pourquoi ne l'écris tu pas :

Code:

protected function alphaize($string) {
        $accents  = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ');
        $noaccents= array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','O','O','U','U','U','U','Y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y');
        $i=0;
      $string = str_replace($accent,$noaccents,$string);
        return strtolower($string);
    }

Hors ligne

 

#9 11-01-2008 16:11:41

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Référencement : utilisation d'url récrite avec le ZF ?

Y a beaucoup plus performant que le foreach ou le str_replace pour ce genre de chose.

Code:

protected function alphaize($string) {
        $accents  = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ');
        $noaccents= array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','O','O','U','U','U','U','Y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y');
      $string = strtr($string, $accent, $noaccents);
        return strtolower($string);
    }

Hors ligne

 

#10 11-01-2008 21:08:38

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Référencement : utilisation d'url récrite avec le ZF ?

Je voudrais bien aussi utiliser la réecriture d'url pour mes menu, car c'est pas tres propore http://www.monsite/catalog/view/cat/1

Mai sje comprends pas trop comment ca marche tout ca, et j'ai pas trouvé de tutorial en francais.

Est ce que c'est possible de connaitre le deroulement de tous ca SVP ?


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#11 12-01-2008 00:09:12

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Poruquoi je n'avais pas utliser strtr()??
Et bien parce que comme je l'ai dis plus au haut j'avais copié un bout de code utilisant strtr() et je ne sais vraiment pas pourquoi mais ça marchais pas sur le serveur de mon boulot (wamp)!!!
Je vais testé ça à l'occasion.

@alien7: si tu est capable de faire de la réécriture en htacces, tu sera capable de réécrire avec le Zend_Controller_Router_Route_Regex... Un peu de bonne volonté et d'assiduité te permettrons de faire ce que tu souhaites à l'aide de ce lien:
http://framework.zend.com/manual/fr/zen … utes.regex

Hors ligne

 

#12 12-01-2008 11:04:31

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: Référencement : utilisation d'url récrite avec le ZF ?

Pour strtr, contrairement a ce que j'ai copier coller a l'arache, il ne faut pas mettre de tableau en 2 et 3eme argument mais des strings.... Cf la doc...

Hors ligne

 

#13 12-01-2008 11:56:42

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Référencement : utilisation d'url récrite avec le ZF ?

Mais est ce qu'il y a moyen de mettre un eurl de ce genre :
http://monsite.fr/catalog/jeux-video
Faire un sorte d'action dynamique sans avoir à ecrire l'action.
J'ai un menu issi d'une SGBD mais que je mets en cache aussi.

Donc est ce que la réecriture d'url convient pour ca ?
Merci


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#14 12-01-2008 12:02:53

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Je dirais "Parfaitement". Par contre je ne vois pas ce que viens faire ton menu dans l'histoire...
Si tu utilise plusieurs actions à la suite pour générer tes pages, je te conseille de chercher l'helper actionStack (j'en ai entendu parler vite fait, ça serait un action helper permetant "d'empiler" des actions).

Grâce au routeur, tu peux vraiment être libre dans ce que tu veux faire.
Perso je bosse sur un site immobilier, et j'ai des urls du genre

Code:

http://monsite.com/immobilier/toulouse/achat/jolie-maison-calme_D54F1.html

Pourtant je n'ai pas de controller 'immobilier' encore moins une action 'toulouse' ou 'achat'...
Par contre j'ai un controller 'Listing' avec une action 'annonce'. J'ai utilisé des regex comme pour l'url rewrting conventionnel au niveau du routeur.

Hors ligne

 

#15 13-01-2008 23:23:21

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Référencement : utilisation d'url récrite avec le ZF ?

Ok j'ai bien assimilée l'url rewrite, mais je réflechi toujours à comment faire pour mes menus.
Je souhaite obtenir le meme resultat que www.priceminister.com :
http://www.priceminister.com/jeux-video

Ca peut marcher si j'ecris un à un pour chaque menu une régle mais ca serait vraiment long à les écrires.

J'aurai du crée un nouveau topic peut étre ...


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#16 13-01-2008 23:27:04

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Pas bête, je pige pas le problème.

Ah ben en fait si. Le truc c'est qu'il ne doivent avoir qu'un "niveau" (un "dossier" défini par pas de "/" dans l'url.
Donc quand y'a pas de / dans l'url on sait que c'est une catégorie, on la traite donc et on regarde si dans toutes les categories (nom stocké en base ça en fait pas des masses quand même...)  si y'a pas un nom qui correspond à l'"urlization du nom (stocké en base ou calculé en directe) via select puis boucle.
Et si oui, on sait ou l'on est. Donc voilà c'est fini.

Les autres cas même principes sauf que pas le même "niveau" c'est donc différentiable par  des url rewrités et en enlevant les routes par défault (:controller/:action/*)

Hors ligne

 

#17 13-01-2008 23:56:53

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Référencement : utilisation d'url récrite avec le ZF ?

Docn si j'ai bien compris je récupère la valeur de l'url en exemple :
http://domaine.com/catalog/jeux-video

Code:

[router]
routes.catalog.type = "Zend_Controller_Router_Route_Regex"
routes.catalog.route = "catalog/(\d+)"
routes.catalog.defaults.controller = "catalog"
routes.catalog.defaults.action = "view"
routes.archive.map.1 = "label"

Je récupère jeux-video, je fais une boucle pour voir si il existe dans ma base. Si il exitse je récupère son id.

Ca sera pas un peu lourd comme traitement ?
Vous en pensez quoi ?
Sinon je garde http://domaine.com/catalog/view/id/1


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#18 14-01-2008 00:07:02

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Ben tu peux toujours juste faire:
http://domaine.com/catalog/view/id/jeux-video_1
C'est toujours ça de gagner en référencement.

Sinon, tu peux charger tes catégories pout ton menu en cache si tu as peur mais je ne pense pas que si tu a dans la dizaine de catégories ça soit "lourd"...

Hors ligne

 

#19 14-01-2008 00:22:12

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Référencement : utilisation d'url récrite avec le ZF ?

Oui mes menus sont deja en cache. Je vais essayer cette méthode sinon comme tu as dis je ferais avec http://domaine.com/catalog/view/id/jeux-video_1

Merci Mr.MoOx pour ton aide précieuse, j'ai appris pas mal avec tous ca et surtout l'utilisation du routeur.

Merci ++ smile

Edit : desolé d'avoir squatté le post

Dernière modification par alien7 (14-01-2008 00:22:42)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#20 14-01-2008 00:23:07

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

wink

Hors ligne

 

#21 14-01-2008 16:03:37

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: Référencement : utilisation d'url récrite avec le ZF ?

Bon pour rajouter une couche, cet article est vraiment intéressant. L'auteur propose 4 façons de traiter des Urls style SEO www.exemplesiteimmo.com/achat-maison-enruine-456.
ça vaut le détoure.

a++

Edit :
- Merci Mr.MoOx pour m'avoir aguillé sur Zend_Controller_Router_Route_Regex c'est exactement ce que je cherchais
- Pour ceux, qui comme moi, ne maîtrise pas tout à fait les expressions régulières, http://www.expreg.com/ explique très bien comment construire des motifs.

Dernière modification par Roulio (14-01-2008 19:36:36)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages