Buonasera a tutti, sto provando sul mio server locale varie soluzioni per rendere gli url delle mie pagine (che, una volta pronte e testate saranno caricate sul web server remoto) più accattivanti e leggibili. Ciò che mi piacerebbe ottenere è che non venga mostrata l'estensione delle pagine (sono tutte in php) quindi, mettendo come url nomesito/home viene mostrata la pagina home.php. Fin qui tutto ok. Ora però mi piacerebbe anche che, richiamando l'url (esempio) nomesito/dati venga mostrata la pagina dati.php che contiene un elenco dei nomi possibili (come prima, funziona) ma chiamando nomesito/dati/mario venga richiamata la pagina dati.php?id=mario e chiamando nomesito/dati/mario/2015 venga richiamato la pagina dati.php?id=mario&y=2015. Quello che ho fatto è scrivere il seguente file .htaccess:
codice:
RewriteEngine On
DirectoryIndex home.php
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteCond %{REQUEST_URI} !\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?id=$2 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?id=$2&y=$3 [L,QSA]
il codice funziona, non fosse per il fatto che, in dati.php (che si trova nella root del sito), dove è contenuta una cartella img contenente le immagini, viene richiamata ad esempio un'immagine come img/pic.jpg capita questo:
se come url metto nomesito/dati la pagina viene caricata correttamente ma l'immagine non è visibile, come se fosse avvenuto un cambio della cartella locale (
)
stesso avviene chiamando nomesito/dati/mario o nomesito/dati/mario/2015
anche se, stampando a video un get dei parametri, sono corretti!
Viceversa, richiamando nomesito/dati.php l'immagine è visibile.
So che potrei risolvere richiamando l'immagine come /img/pic.jpg, forzando il percorso a partire dalla root ma proprio non capisco per quale motivo ci dovrebbe essere un cambio di cartella!
Qualcuno ha idea di cosa succeda? non ho trovato una buona guida che spieghi fino in fondo tutto il funzionamento delle rewrite rules. Grazie a tutti, un saluto, Alessandro
Edit: questa è più una curiosità rivolta a chi è più navigato di me nel settore che una domanda, ho visto cercando sull'argomento che spesso si usa anche fare una cartella (nell'esempio di prima sarebbe dati) e poi al suo interno mettere una pagina index.php (o home.php visto il directoryindex dell'htaccess) e magari altre pagine (come mario.php). Quale soluzione (inteso tra passaggio di variabili via get e rewrite dell'url o cartelle con index propria) preferite usare o trovate sia più comoda/gestibile?