Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
programmazione:php:rotte_personalizzate [22/02/2022 - 10:56] Fabio Di Matteo |
programmazione:php:rotte_personalizzate [23/08/2023 - 16:54] (versione attuale) Fabio Di Matteo |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Rotte personalizzate in PHP ====== | ====== Rotte personalizzate in PHP ====== | ||
- | Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 22/02/2022 - 10:20 //** // // | + | Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 23/08/2023 - 16:40 //** // // |
- | Anche in php e apache è possibile ottenere delle rotte personalizzate. Ecco come. \\ | ||
- | Per rotte prsonalizzate intendiamo qualcosa come per esempio **https://www.miosito.it/homepage** . | + | Trovata questa classe che permette di specificare delle rotte personalizzate in php ([[https://github.com/bramus/router/tree/master|Bramus Router]]) . Mostro brevemente l'utilizzo. |
- | ===== Configuriamo Apache ===== | + | <code php> |
- | Assicuriamoci che nel **file di configurazione principale di Apache** (di solito /etc/httpd/htppd.conf, oppure /etc/apache2/apache2.conf) sia abilitata la direttiva per l'override delle impostazioni attraverso i file .htaccess . | + | <?php |
+ | # https://github.com/bramus/router/tree/master | ||
+ | |||
+ | require_once __DIR__ . '/Router.php'; | ||
+ | |||
+ | // Create a Router | ||
+ | $router = new \Bramus\Router\Router(); | ||
+ | |||
+ | |||
+ | /* | ||
+ | * $router->get('pattern', function() { }); | ||
+ | $router->post('pattern', function() { }); | ||
+ | $router->put('pattern', function() { }); | ||
+ | $router->delete('pattern', function() { }); | ||
+ | $router->options('pattern', function() { }); | ||
+ | $router->patch('pattern', function() { }); | ||
+ | $router->all('pattern', function() { }); | ||
+ | * */ | ||
+ | |||
+ | $router->get('/', function () { | ||
+ | echo '<h1>Home page</h1>'; | ||
+ | |||
+ | }); | ||
+ | |||
+ | $router->get('/fabio', function () { | ||
+ | echo '<h1>Hello Fabio!</h1>'; | ||
+ | echo 's='.$_GET['s']; | ||
+ | |||
+ | }); | ||
+ | |||
+ | $router->set404(function () { | ||
+ | echo '<h1>Pagina non trovata </h1>'; | ||
+ | }); | ||
- | <file> | + | |
- | ... | + | |
- | AccessFileName .htaccess | + | $router->run(); |
- | ... | + | |
- | </file> | + | |
- | Andiamo adesso nel **file della configurazione del nostro virtual host** e aggiungiamo quanto segue, avendo cura di scrivere il percorso giusto delle nostre cartelle: | + | ?> |
- | <file> | ||
- | <VirtualHost> | ||
- | ... | ||
- | <Directory /var/www/html> | ||
- | Options Indexes FollowSymLinks | ||
- | AllowOverride All | ||
- | Require all granted | ||
- | </Directory> | ||
- | |||
- | </VirtualHost> | ||
+ | </code> | ||
- | </file> | + | **.htacces per apache** |
- | + | ||
- | In seguito inseriremo nella root del nostro progetto il file .htaccess : | + | |
<file> | <file> | ||
RewriteEngine On | RewriteEngine On | ||
- | RewriteBase / | + | RewriteCond %{REQUEST_FILENAME} !-f |
RewriteCond %{REQUEST_FILENAME} !-d | RewriteCond %{REQUEST_FILENAME} !-d | ||
- | RewriteCond %{REQUEST_FILENAME} !-f | + | RewriteRule . index.php [L] |
- | RewriteRule ^(.+)$ /PHP/routes/index.php [QSA,L] | + | |
</file> | </file> | ||
- | |||
- | Attenzione ai percorsi. Ovviamente devono corrispondere al vostro index.php sulla root del progetto. In pratica stiamo redirigendo tutto il traffico http sul file index.php. Dunque ///PHP/routes/ // è la cartella dove ho messo il mio progetto. | ||
- | |||
- | |||
- | ===== Il nostro codice PHP ===== | ||
- | **index.php** | ||
- | <code php> | ||
- | <?php | ||
- | |||
- | $request = $_SERVER['REQUEST_URI']; | ||
- | |||
- | |||
- | |||
- | switch ($request) { | ||
- | | ||
- | | ||
- | case '/PHP/routes/' : | ||
- | require __DIR__ . '/rotte/home.php'; | ||
- | break; | ||
- | case '/PHP/routes/info' : | ||
- | require __DIR__ . '/rotte/phpinfo.php'; | ||
- | break; | ||
- | | ||
- | case '/PHP/routes/fml': | ||
- | header('Location: https://www.freemedialab.org/'); | ||
- | break; | ||
- | |||
- | default: | ||
- | http_response_code(404); | ||
- | require __DIR__ . '/rotte/404.php'; | ||
- | break; | ||
- | } | ||
- | ?> | ||
- | |||
- | </code> | ||
- |
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.