Magazine

Zend Framework et la réécriture d’url pour une page spécifique

Publié le 16 mai 2008 par Dator

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

Retour à La Une de Logo Paperblog

A propos de l’auteur


Dator 51 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog