8
rewrite di url che contengono spazi o underscore
Può sembrare strano ma uno degli errori in cui si incorre spesso è la sottovalutazione del formato delle url. In effetti non basta usare url contenenti parole chiave che rimandano al contenuto della pagina puntata, è ugualmente importante considerare con attenzione quale carattere usare per separare le parole chiave nelle stesse url.
Per esempio se si usa il carattere _ come in parola1_parola2, Google ritornerà come risultato la pagina solo se l’utente specificherà precisamente la chiave di ricerca parola1_parola2. Se invece usiamo il carattere - (meno), Google restituirà la pagina puntata sia che l’utenti specifichi come chiave di ricerca le singole parola1, parola2 sia la combinazione esatta “parola1 parola2″.
Altra condizione particolarmente dannosa che ho rilevato in diversi casi è la composizione di url del tipo: http://www.poveroiltuosito.com/parola1+parola2+parola3.html
Dove il carattere + codifica lo spazio tra le parole.
Queste url potrebbero causare problemi di accesso a Google ed altri crawler. Spesso questi problemi corrispondono a centinaia e centiania di pagine non trovate rilevabili sul Google webmaster tools. In alcuni casi, queste pagine potrebbero risultare accessibili dal browser ma non dai crawler.
Per inciso, recentemente ho individuato una ingenuità fatale in uno di quegli script preconfezionati. Il programmatore probabilmente deve aver intuito le problematiche delle url con gli spazi e prevedendo l’uso del carattere - ha implementato una soluzione in grado di rispondere in modo indifferente sia ad url aventi lo spazio per carattere di separazione sia ad url aventi il segno -. Risultato: ogni pagina del sito, per il motore di ricerca, aveva un doppio. Niente di più dannoso.
Comunque, concludo proponendo due blocchi di istruzioni per eseguire la rewrite di url che contengono spazi o underscore in url contenenti solo il carattere -. La rewrite esegue, come necessario, una redirect 301.
Per gli underscore:
RewriteEngine On
RewriteBase /
RewriteRule !\.(html|php)$ - [S=5]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6-$7 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=underscores:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=underscores:Yes]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule (.*) http://d.com/$1 [R=301,L]
Per gli spazi (meno elegante ma pur sempre funzionante):
RewriteRule ^(.+)\+(.+)\+(.+)\+(.+)\.html http://d.com/$1-$2-$3-$4.html [R=301,L,NC]
RewriteRule ^(.+)\+(.+)\+(.+)\.html http://d.com/$1-$2-$3.html [R=301,L,NC]
Nell’ultimo esempio le url http://d.com/parola1+parola2+parola3+parola4.html e http://d.com/parola1+parola2+parola3.html sono convertire rispettivamente in:
http://d.com/parola1-parola2-parola3-parola4.html
http://d.com/parola1-parola2-parola3.html
Ovviamente questo è codice da scrivere in .htaccess ammesso che sul vostro server sia abilitato il supporto per mod_rewrite.
Alcune fonti in inglese che mi hanno ispirato:
Rewrite underscores to hyphens for SEO URL
RSS feed dei commenti a questo articolo. TrackBack URI









