Ottimizzazione URL (SEO) con Zend Framework

Rimettendo mano sul framework oggi mi sono scontrato di nuovo con un problema che da tempo volevo risolvere. Come sappiamo gli url con cui chiamiamo i vari Controller di Zend Framework vengono richiamati con una codifica ben precisa:

http://www.m4ss.net/controller/action

In questo modo quindi chiamiamo tutti i Controller e le Action che desideriamo invocare. A questo indirizzo possiamo poi aggiungere i parametri in questo modo:

http://www.m4ss.net/controller/action/params1/valore1/params2/valore2

In pratica accodiamo il nome del parametro e a seguire il suo valore.

Ciò che mi premeva risolvere da tempo era il poter accorciare questo indirizzo quando chiamo il contenuto di un sito. Ipotizziamo di avere un sito semplice che richiama i vari contenuti in base ad un codice ottimizzato per il SEO. Un esempio di codice potrebbe essere:

Tale codice è presente in un campo di database e, tramite query, estraggo il contenuto richiesto. Nel mio sito avrò un Controller che si occupa di estrarre i contenuti in base a tale codice. Se utilizzassimo la route normale avremmo un indirizzo del tipo:

http://www.m4ss.net/content/get/code/zend-framework-teoria-di-base-front-controller-action

/content/get/code si ripete per ogni contenuto, allo stesso modo, senza alcuna differenza. Mi premeva accorciarlo un po’!

Ho risolto in questo modo, il mio Controller Content è così composto:

class ContentController extends Zend_Controller_Action
{
private $_myCode;
public function init()
{
// get my code
$this->_myCode = $this->getRequest()->getActionName();
// change action -> redirect always to index
$this->getRequest()->setActionName('index');
}
public function indexAction()
{
// get parameters
$cModel = new Model_ContentLang();
$myContent = $cModel->getByCode($this->_myCode);
$this->view->myC = $myContent;
}
}

In pratica intercetto l’action nella funzione init() di inizializzazione del Controller. Aggancio l’action facendolo diventare il mio codice e reimposto l’action inviando il tutto sempre ad index. In index poi prelevo il contenuto dal database in base al codice e lo invio alla View.

In questo modo l’url può essere semplificato in questo modo:

http://www.m4ss.net/content/zend-framework-teoria-di-base-front-controller-action

Leave a Reply

Your email address will not be published. Required fields are marked *