Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente Ultima revisione Entrambe le parti successive la revisione | ||
programmazione:php:rotte_personalizzate [22/02/2022 - 10:32] Fabio Di Matteo creata |
programmazione:php:rotte_personalizzate [23/08/2023 - 16:43] 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 ===== | ||
- | 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 . | ||
- | |||
- | <file> | ||
- | ... | ||
- | AccessFileName .htaccess | ||
- | ... | ||
- | </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> | ||
- | |||
- | |||
- | </file> | ||
- | |||
- | In seguito inseriremo nella root del nostro progetto il file .htaccess : | ||
- | <file> | ||
- | RewriteEngine On | ||
- | RewriteBase / | ||
- | RewriteCond %{REQUEST_FILENAME} !-d | ||
- | RewriteCond %{REQUEST_FILENAME} !-f | ||
- | RewriteRule ^(.+)$ /PHP/routes/index.php [QSA,L] | ||
- | |||
- | </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. | ||
- | |||
- | ===== Il nostro codice PHP ===== | ||
- | **index.php** | ||
<code php> | <code php> | ||
<?php | <?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>'; | ||
+ | }); | ||
- | $request = $_SERVER['REQUEST_URI']; | + | |
+ | |||
+ | $router->run(); | ||
+ | ?> | ||
- | |||
- | 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> | </code> | ||
- |
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.