Scrivere un .htaccess per il nostro CMS
Giovedì 29 Novembre 2007 - 14:06
di Claudio Garau


Se per un determinato progetto decidiamo di non utilizzare soluzioni CMS già pronte e preferiamo la vecchia e cara tecnica dello sviluppo from scratch (cioè partendo da zero), dovremo porci il problema relativo al formato delle URL.
Inutile negarlo, queste hanno ormai assunto un ruolo molto importante per tematiche come posizionamento nelle SERP dei motori di ricerca e ottimizzazione, quindi per non ignorare il problema è bene (già in fase progettuale) che il nostro CMS permetta di proporre sia agli utenti che a Google e compagnia delle URL quanto più possibile User Friendly e Search Engine Friendly.
A questo punto le soluzioni potrebbero essere due: creare un CMS in grado di generare fisicamente file e cartelle, o affidarci al mod_rewrite di Apache (quando disponibile) per scrivere dei file .htaccess appositamente confezionati per il nostro scopo.
La prima soluzione non è molto pratica ed è scarsamente utilizzata nei CMS più noti sviluppati in PHP; è però abbastanza semplice da realizzare associando i file e le cartelle create a dei records in tabella da utilizzare per l’archiviazione delle diverse voci che vanno a comporre le URL (ad esempio: nome cartella = nome_categoria, nome file = nome_pagina).
La seconda soluzione è molto più pratica e professionale, ma richiede buone conoscenze riguardo alla sintassi da utilizzare per la scrittura dei file .htaccess, tra le nozioni necessarie vi sono anche quelle relative all’utilizzo delle espressioni regolari che non sono certo pane per i neofiti.
Fortunatamente, la tecnica della riscrittura delle URL va diffondendosi sempre di più presso gli sviluppatori, di conseguenza sono sempre maggiori le risorse disponibili riguardo all’argomento.
Per coloro che decidono di affrontare la tematica, consiglio di dare uno sguardo al file .htaccess di sNews di cui riporto integralmente le regole per il rewrite:
RewriteEngine On
#RewriteBase /sNews16
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?category=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z_]+)/([^/]+) index.php?category=$1&title=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z_]+)/([^/]+)/([^/]+)/ index.php?category=$1&title=$2&commentspage=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9_-]+)/([0-9]+)/ index.php?category=$1 articlespage=$2 [L]
Non c’è che dire, è semplice e completo nello stesso tempo prevedendo tutti i casi più ricorrenti di riscrittura; ottimo come spunto per l’integrazione con i CMS “caserecci”.
Commenti
1
Salve,
ho cercato di adattare questo script per il mio sito in cms, newsphp. ma non ci sono riuscito, mi sapete dire come posso adattarlo al mio sito.Grazie in anticipo
xoxo
2
Non c’e nessuno che riescha a darmi una drita?!
3
…
4
Mai usato NewsPHP, è un prodotto a pagamento potresti chiedere all’asistenza:
http://www.newsphp.com/support# - postato da Claudio Garau - 06 Dicembre 2007 - 13:47
5
Salve Claudio,
La mia versione e vechia, e loro non ofrono piu asistenza per quella versione! In pratica io ho questi url:
index.php?id=12781 (articolo)
index.php?cat_id=telefonia (categoria)
index.php?topmenuitem=Chi siamo (pagine create in html)RewriteEngine On
#RewriteBase /sNews16
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cat_id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z_]+)/([^/]+) index.php?cat_id=$1&id=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z_]+)/([^/]+)/([^/]+)/ index.php?topmenuitem=$1 [L]con questa modificha, mi funziona solo il rewrite della “categoria” le altre no!
Mi sapeste dire dove sbaglio?Saluti
xoxo
6
se la versione è vecchia ti becchi quella nuova , altrimenti io mi preoccuperei seriamente della sicurezza del sito piuttosto che dell’.htaccess =) salute
# - postato da murdercode - 22 Settembre 2008 - 14:42







