Posso proporre a Gianni di scrivere un articolo?

Ciao Gianni,

è parecchio che non ti scrivo.

Ma sei sempre il mio stimatissimo punto di riferimento.

Vengo al dunque, sperando che non ti appare banale la mia domanda.

Si parla tanto in giro di come si deve sviluppare un sito in php e si forniscono tante nozioni,

sempre le stesse e con poca originalità.

Ma non si dicono le cose più basilari e pratiche.

Per esempio:

1) Un sito in php (come il tuo) quasi sempre viene impostato a tre colonne. Due laterali fisse

    e una colonna centrale dinamica che cambia con chiamate "get".

    Lo sviluppatore si trova a linkare pagine del tipo:  http://www.pippo.it/?sezione=ufficio

                                                                                   http://www.pippo.it/?sezione=casa

   ecc.

   Purtroppo questo tipo di indirizzo viene letto poco o per niente dai motori di ricerca.

   e infatti vedo che anche tu non utilizzi questo sistema di collegamento di pagine.

   A parte che la mappa di un sito con /?.. mi pare poco simpatica.

   Allora mi insegni come si fa a cambiare i connotati? O è un segreto che pochi devono conoscere?

2) - Il secondo inghippo che non riesco a risolvere è questo:

      Se costruisco una pagina in pippo/ufficio/scaffali.php

      e la vado a richiamare da pippo?sezione=scaffali non mi ritrovo con i collegamenti delle immagini

      e spesso devo sostiutire i percorsi con ../../../ ecc.

      C'è qualcosa che mi sfugge e non capisco. Bisognerebbe utilizzare location?

      Se è così come si fa? Possibile che tutti sanno ste cose e io no?

3) - Infine mi piacerebbe sapere qualcosa di più chiaro su come criptare i link.

       Facile facile come solo tu sai fare.

Ti saluto cordialmente.

Tommy

inviato 7 anni fa
tommy
X 0 X

ti provo a rispondere io :)

1. Per creare un sito con url belli e seo-friendly si utilizza il mod rewrite di apache che, come dice il nome, rimappa gli url.

Per utilizzare il mod_rewrite bisogna scrivere le regole in un file chiamato .htaccess, io ho utilizzate queste regole:

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?section=$1
</IfModule>

La prima riga: <IfModule mod_rewrite.c>

è come un if in php e controlla se è presente il mod rewrite

La seconda:

RewriteEngine on

attiva il mod rewrite

La terza e la quarta:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?section=$1

mappano ogni url che non esiste alla pagina index.php con parametro section uguale alla seconda parte dell'url, eccoti degli esempi:

http://example.com/ -> http://example.com/index.php?section=
http://example.com/news -> http://example.com/index.php?section=news
http://example.com/test/tset -> http://example.com/index.php?section=test/tset

infine l'ultima riga termina l'if

ed ecco il file index.php:

<?php

function get_url($section) {
   $modules = apache_get_modules();
   
   if (in_array('mod_rewrite', $modules)) {
      return '/' . $section;
   }
   return '/index.php?section=' . $section;
}

$available_sections = array(
   'news',
   'info',
   'blog'
);

$default_section = $available_sections[0];

$section = $_GET['section'];

//when you try to access http://example.com/
if ('' == $section) $section = $default_section;

if (!in_array($section, $available_sections)) {
   header("HTTP/1.0 404 Not Found");
    header("Status: 404 Not Found");
   header("Location: /page-not-found.php");
   exit();
}

echo 'The section is: <b>', $section, '</b>';

//test :D

echo '<ul>';
foreach ($available_sections as $section) {
   echo '<li><a href="', get_url($section), '">', $section, '</a></li>';
}
echo '</ul>'

?>

La funzione get_url serve per ottenere l'url corretto in caso di mancanza del mod_rewrite, infatti in assenza di esso si ottiene un url del tipo: /index.php?section=blog altrimenti si ottiene: /blog

Ho scelto di non utilizzare un url completo per poter far funzionare lo script anche cambiando dominio (però se lo si mette in una sottodirectory non va più, almeno per gli url)

Poi come prova ho creato un array di sezioni che sono disponibili, in modo da rimandare ad una pagina di errore se la sezione non esiste. Poi ho scelto una sezione predefinita nel caso si accedesse al sito senza mettere argomenti. Il resto è semplice da capire ;)

2. È un problema con non ho mai capito come risolverlo :(

3. Se intendi reindirizzare un utente dall'url http://example.com/aSdx-ZAddsu23, tipo tinyurl, puoi usare la tecnica descritta al primo punto ;)

Utilizzando mysql sarebbe ancora meglio :D

risposto 7 anni fa
patrick91
X 0 X

Purtroppo su server Aruba/windows non ho possibilità di gestire .htaccess! :'(

Hai un'alternativa?

Grazie.

P.S. Circa gli altri problemi non è che Gianni ne sa qualcosa?

Mi è giunta una e-mail in cui mi si dice che Gianni l'ha spostata in un'alra sezione. :'(

risposto 7 anni fa
tommy
X 0 X

purtroppo su aruba con windows non puoi utilizzare il mod rewrite :(

L'unica alternativa (che io sappia) è quella di cambiare hosting

Per gli altri problemi credo che Gianni sappia come risolverli ;)

L'ha spostata in questa sezione perché qui è più corretto.

risposto 7 anni fa
patrick91
X 0 X

Ciao patrick91, il regolamento parla chiaro, in una discussione non si possono affrontare più di un argomento.

Ti prego quindi di aprire una discussione per ciascun dubbio/quesito che hai e sarò lieto di risponderti (tempo permettendo).

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda