Aujourd’hui nous allons voir comment réécrire une url avec le Zend Framework mais uniquement pour un page en particulier.
En général, sans rien toucher au Zend_Router de Zend, on obtient des adresses web de cette forme là :
http://www.monsite.com/monControlleur/monAction/monParam1/maValeur1/monParam2/maValeur2
Ce genre d’adresse n’est pas forcément optimiser pour le référencement car rappelons pour les initiés des techniques de référencement que Google apprécie particulièrement les adresses internet limitées à 4 sous dossiers . Ici, c’est trop !
Donc pour cela, nous avons une classe de Zend qui nous permet de spécifier une route (adresse) spécifique pour un controlleur et une action en particulier.
Dans le précédent billet, je vous expliquai le principe du controlleur frontal lors de l’implémentation de Zend pour notre site internet.
Pour le moment, dans notre exemple, les adresses ressemblent à cela :
http://www.monsite.com/produits/detail/id/monIdenNumero
Il suffit de faire comme cela :
/* Ici on prépare la route, on instancie un route avec expression régulière qui peut comprendre n'importe quel caractère. Ensuite on passe en paramètre un tableau d'option : 1 correspond au premier paramètre pour eviter de faire id/1213 controller et action : le controlleur a réécrire et l'action à réécrire */ $route = new Zend_Controller_Router_Route_Regex('produit/(.+)',array( 1 => 'id', 'controller' =>'produits', 'action' =>'detail') ); // On instancie le controlleur frontal $frontController = Zend_Controller_Front::getInstance(); // On récupère la router basique $router = $frontController ->getRouter(); // On ajouter une route au router en spécifiant un paramètre et la route préparée $router ->addRoute('produit',$route); // On spécifie le dossier des controlleurs $frontController->setControllerDirectory('./application/controllers'); $frontController->dispatch(); // On envoie l'application
On aura donc maintenant une route qui ressemblera à cela :
http://www.monsite.com/produit/monIdenNumero
Parfait non? Enfin parfait pour ce que l’on cherchait à faire mais cela n’est pas entièrement optimisé pour le référencement car on affiche dans l’adresse un numéro et pas une chaine de caractère descriptive; je vous en parlerais prochainement dans un prochain billet!
J’espère que cela vous aura aidé dans votre quête de la perfection !
Mots-clés : PHP, Orienté Objet, Zend