Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il Controller: URL rewriting

Come associare il giusto front-controller ai propri progetti Symfony attraverso la riscrittura degli URL
Come associare il giusto front-controller ai propri progetti Symfony attraverso la riscrittura degli URL
Link copiato negli appunti

Quando si sviluppa un applicativo utilizzando Symfony abbiamo la possibilità di generare diversi ambienti. In maniera del tutto intuitiva possiamo pensare, ad esempio, ad un ambiente di sviluppo ed uno di produzione oppure, per un applicativo che prevede una parte di front-end e una parte di back-end, ci potrà essere un ambiente di sviluppo per il front-end ed uno per il back-end, un ambiente di produzione per il front-end e uno per il back-end. Ciascun ambiente ha un front controller distinto (vedi tabella seguente).

Ambiente Front controller
Sviluppo Front-End frontend_dev.php
Produzione Front-End index.php
Sviluppo Back-End backend_dev.php
Produzione Back-End backend.php

I file dei vari front controller sono tutti contenuti nella sotto-directory web della directory principale del progetto. Avendo però più di un front controller dovrà esistere una qualche maniera per indicare all'applicativo sviluppato con Symfony quale di essi dovrà essere utilizzato. Dobbiamo allora andare a osservare i file settings.yml contenuti all'interno delle directory appsNomeApplicazioneconfig dove con NomeApplicazione si intende il nome dell'applicazione in questione (backend e frontend, ad esempio).

Listato 6: Un esempio di file settings.yml

prod:
  .settings:
    no_script_name: on
    logging_enabled: off
dev:
  .settings:
    error_reporting: <?php echo (E_ALL | E_STRICT)."n" ?>
    web_debug: on
    cache: off
    no_script_name: off
        etag: off

Quando il valore della variabile no_script_name è on allora viene utilizzato il front controller indicato dal web server; quando il valore della variabile no_script_name è off allora il front controller da utilizzare deve essere indicato nell'URL, ad esempio: http://www.biblioteca.it/frontend_dev.php/libri/informatica/2009/lista-libri.html

Bisogna a questo punto capire come configurare il web server per richiamare il giusto front controller quando questo non è specificato nell'URL.

Se si utilizza Apache, questo è possibile solo se è attivata l'estensione mod_rewrite, cui abbiamo dedicato tempo fa un ampio approfondimento. Ogni progetto Symfony contiene all'interno della directory web il file .htaccess che serve proprio ad attivare l'estensione mod_rewrite al web server per la directory web. Il web server analizza l'URL e se non trova nessuna stringa con un suffisso (.php, .html, ad esempio) e non c'è una versione della pagina disponibile nella cache allora gira la richiesta alla pagina index.php.

Sarebbe corretto impostare a on la variabile no_script_name di un solo ambiente in quanto il meccanismo di URL rewriting è capace di gestire una sola applicazione per un solo ambiente. Se vengono impostate a on variabili no_script_name di più ambienti tutti gli URL vengono interpretati come richiesta del front controller del front-end di produzione.

Ti consigliamo anche