30 giugno 2011 Roberto Puzzanghera 0 commenti
Assumerò che il lettore sia familiare con il concetto di "SEO friendly URLs". In caso contrario è consigliabile leggere prima queste pagine:
Al costo di "imbrodarmi" un po', utilizzerò come caso reale un mio lavoro: http://wildzone.it. Si tratta di una galleria di immagini dove i contenuti sono organizzati gerarchicamente in questo modo:
LINGUA -> CATEGORIA -> GALLERIA -> IMMAGINE
Di conseguenza la maniera più ovvia di scrivere gli indirizzie web sarebbe la seguente: http://wildzone.it/en/italy-4/seaside-of-sardinia-19/orosei-117f.html (indirizzo esterno). L'indirizzo interno, gestito in realtà dal CMS (Content Managment System) e più conciso, è: http://wildzone.it?l=en&cat=4&gal=19&id=117. Come si può vedere, l'indirizzo esterno è SEO and user friendly. Esso comprende dentro di sè il numero id della lingua/categoria/galleria/foto. Inoltre, la lettura dell'indirizzo fornisce al visitatore una migliore comprensione dell'argomentodel sito e della sua organizzazione intrerna. Lo stesso vale per Google.
mod_rewrite
per fare la trasformazionemod_rewrite
può essere di aiuto nel convertire gli indirizzi SEO friendly (esterni) usati dal visitatore negli indirizzi interni (quelli con le query) che sono graditi al CMS.
E' necessario configurare apache
in questo modo:
./configure --enable-rewrite
Inoltre è necessario abilitare mod_rewrite
e le .htaccess Options
nella configurazione del virtual host:
AllowOverride Options FileInfo
E queste sono le istruzioni che ho messo nel mio file .htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine on
# photo page
RewriteCond %{REQUEST_URI} .*f.html$
RewriteRule ^(\w+)/.*-(\w+)/.*-(\w+)/.*-(\w+)f\.html$ ?l=$1&sez=$2&gal=$3&id=$4 [L]
# thumbnails page
RewriteCond %{REQUEST_URI} .*g.html$
RewriteRule ^(\w+)/.*-(\w+)/.*-(\w+)g\.html$ ?l=$1&sez=$2&gal=$3 [L]
</IfModule>
Vediamo in dettaglio le regular expressions.
Questa riga seleziona le pagine il cui nome termina con "f.html" e esegue la regola seguente (la "f" è usate per distinguere le pagine delle foto dalle altre).
RewriteCond %{REQUEST_URI} .*f.html$
Se la condizione qui sopra è soddisfatta questa regola viene eseguita (spiegherò in edttaglio la regular expression):
RewriteRule
^ l'espressione deve essere all'inizio della stringa
( inizio del pattern
\w+ a sequence of characters
) fine del pattern. (\w+) cattura la stringa della lingua ("en" o "it"). Essa sarà riscritta nella variabile $1.
/ ci aspetta un carattere slash
.*- zero o più caratteri per il titolo della categoria seguiti da un segno meno che precede l'id della categoria
(\w+) un altro pattern, che cattura l'di della categoria. Sarà trasformato nella vartiabile $2
/ un carattere slash
.*- zero o più caratteri seguiti da un segno meno
(\w+) pattern che cattura l'id della galleria. Sarà riscritto nella variabile $3
/ un carattere slash
.*- zero o più caratteri seguiti da un segno meno
(\w+) pattern che cattura l'id della foto. Sarà riscritto nella variabile $4
f il carattere f è usato per identificare la regola associata alla pagina delle foto
\.html \ è il carattere di escape, poichè il punto è un carattere speciale. Qui ci si aspetta una stringa ".html".
$ l'espressione deve essere alla finedella stringa.
?l=$1&sez=$2&gal=$3&id=$4 ecco come l'indirizzo sarà riscritto. $1, $2, $3, $4 sono rispettivamente i quattro pattern di cui sopra.
[L] dice ad Apache
di terminare il processamento della regola per quanto riguarda questa richiesta.
qq_temporary_problem_(#4.3.0)
2 giugno 2023 07:32
qq_temporary_problem_(#4.3.0)
1 giugno 2023 22:18
qq_temporary_problem_(#4.3.0)
31 maggio 2023 19:22
qq_temporary_problem_(#4.3.0)
31 maggio 2023 15:42
qq_temporary_problem_(#4.3.0)
31 maggio 2023 15:33
Thank you! for all the documentation, patches and support
26 maggio 2023 09:42
free(): double free detected in tcache 2: /var/www/qmail/cgi-bin/qmailadmin
17 maggio 2023 16:25
free(): double free detected in tcache 2: /var/www/qmail/cgi-bin/qmailadmin
17 maggio 2023 08:46
Tags
apache clamav dkim dovecot ezmlm fail2ban ftp guide hacks lamp letsencrypt linux linux-vserver lxc mariadb mediawiki mozilla mysql openboard owncloud patches php proftpd qmail qmail to postfix qmail-spp qmailadmin rbl roundcube rsync sieve simscan slackware solr spamassassin spf ssh ssl tcprules tex ucspi-tcp vpopmail vqadmin