08/08/2008 - Home Feed

HOME « E-Pillole



Redirect url senza slash con htaccess

Post inserito il 03/06/2007 da Fede in Piccoli Accorgimenti

Oggi ho imparato una cosa nuova, che se devo dire la verità mi ha lasciato alquanto perplesso. Oltretutto, considerando la facilità con cui ho trovato la soluzione, è anche un problema decisamente noto agli addetti ai lavori.

In sintesi, spucliando tra le statistiche del sito, ho notato un gran numero di Errori 404 PAGE NOT FOUND provenienti da ricerche su Yahoo. Al momento, dato il mio rapporto conflittuale con big G, ho subito pensato al peggio, ma fortunatamente, è bastato cercare un pochino in giro, e subito mi sono tranquillizzato.

Praticamente, tutto dipende dal fatto che alcuni motori di ricerca, tra cui Yahoo, omettono lo slash / a fine url. Di conseguenza, nel caso in cui gli url siano stati riscritti tramite htaccess, non esistendo "fisicamente", la pagina non viene trovata e viene generato l'errore 404 page not found.

Decisamente una cosa da evitare :)

Ecco come appare lo stesso risultato su Google e su Yahoo.

- Google:

Google serp

- Yahoo:

Yahoo serp

Come detto in precedenza, il "problema" è risaputo, e su hosting Linux con Apache la soluzione è semplicissima :)

Addirittura, nella sezione URL Rewriting guide della Guida ufficiale di Apache, alla voce trailing slash problem, è dedicato un mini paragrafo alla risoluzione del problema. Nel mio caso, molto semplicemente, è bastato inserire queste "istruzioni" nel file .htaccess presente nella root directory:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.e-pillole.com/$1/ [L,R=301]

Lasciando perdere le prime due righe, vediamo la parte utile:

RewriteCond %{REQUEST_FILENAME} !-f si assicura che non venga aggiunto lo slash finale / ad eventuali files realmente esistenti;

RewriteCond %{REQUEST_URI} !(.*)/$ aggiunge lo slash finale;

RewriteRule ^(.*)$ http://www.e-pillole.com/$1/ [L,R=301] rediretta correttamente gli url con lo slash finale aggiunto;

Problema risolto ma dubbi e perplessità rimangono...

Perchè Yahoo e altri motori di ricerca omettono lo slash finale??

Domanda da 1 milione di $ :)


Post letto 1130 volte | Commenti (2) | Bookmark   del.icio.us    segnalo


Commento postato da Grongo il 24/06/2007
Ciao, ho scoperto che esiste un modulo di apache che serve proprio per risolvere questo problema:
http://httpd.apache.or­g/docs/2.2/mod/mod_dir.html
Sper­o­ possa essere utile

Commento postato da Fede il 26/06/2007
@Grongo

essendo un modulo di apache però, senza accesso al server se non è abilitato c'è poco da fare...

grazie della segnalazione comunque :)

potrebbe essere utile a qualcun'altro!!

ciaociao

Commenta Post

(opzionale)
(opzionale)


Codice antispam: Codice antispam