Dev 5 min readface Aronne Briviofolder Generale 30 Jan 2017

Apache e gli URL "SEO Friendly"



Per SEO, Search Engine Optimization, si intende un insieme di operazioni volte a migliorare la visibilità di un sito web sui motori di ricerca, con conseguente aumento di visualizzazioni e visite.

Tra queste una delle attività più importanti è quella nota come URL Optimization, che consiste nel costruire i link delle pagine del sito in modo da risultare più leggibili e contenere qualche informazione sul contenuto della pagina stessa.

Solitamente i CMS più diffusi offrono questa funzionalità out of the box. Wordpress ad esempio, come impostazione predefinita, genera link del tipo dominio/anno/mese/titolo-articolo, ma come possiamo modificarne la struttura a piacimento? E se il nostro sito non si appoggiasse ad un CMS?

Ed è qui che entra in gioco Apache.

Apache logo

 

Apache HTTP Server è la piattaforma server web più diffusa, perchè in grado di operare su una grande varietà di macchine e sistemi operativi e perchè modulare, vale a dire che a seconda delle necessità è possibile caricare o meno diversi moduli della piattaforma.

Tra questi ci viene in aiuto mod_rewrite, che permette di riscrivere l'url delle pagine del nostro sito.

Per default questo modulo mappa un URL in un percorso sul filesystem, vale a dire che dominio/foo/bar.php indirizzerà al file bar.php contenuto nella cartella foo, ma permette anche di reindirizzare determinati URL ad altri.

Questo può essere effettuato attraverso delle direttive impartite modificando il file httpd.conf (file di configurazione di Apache, solitamente non modificabile) oppure il file .htaccess presente nella root del sito web.

 

Tornando un attimo al SEO, l'ottimizzazione dei link deve essere effettuata tenendo conto di alcune regole base quali

  • Evitare l'uso di query string, quali articolo.php?idarticolo=1234
  • Evitare link più lunghi di 250 caratteri
  • Inserire negli indirizzi alcune informazioni sul contenuto della pagina, quali titolo, categoria o tag

Nel momento in cui si progetta un sito web dinamico, i cui contenuti vengono salvati in un database, però, risulta praticamente impossibile non utilizzare le query string (quindi l'identificazione di una risorsa specifica esclusivamente attraverso parametri GET), con l'obiettivo di scrivere solo una pagina che faccia da template e che verrà popolata dal contenuto dei vari articoli.


Facendo un esempio pratico, L'angolo nerd per la gestione degli articoli ha proprio una struttura di questo tipo: una pagina post.php a cui vengono passati i parametri per recuperare l'articolo corretto dal database.

Come abbiamo appena visto questo non è l'approccio migliore se si tiene al proprio ranking sui motori di ricerca, quindi abbiamo utilizzato il modulo rewrite di Apache per rimappare gli URL degli articoli, in modo da avere una struttura del tipo /post/id/titolo-articolo.

Per farlo è stato modificato il file .htaccess in questo modo

RewriteEngine On
RewriteBase /
RewriteRule ^post/([0-9]+)/[A-Za-z0-9\-\.]+/?$ post.php?id=$1 [NC,L]

In particolare è necessario abilitare il rewrite attraverso il comando RewriteEngine On e poi aggiungere la regola per il mapping desiderato.

La sintassi è del tipo RewriteRule pattern$ target [flags].

Il pattern inizia sempre per ^, che sta a significare la nostra webroot (www.langolonerd.it/), si conclude con $ e accetta le espressioni regolari (regex).

Nel nostro caso le due regex presenti sono ([0-9]+), che sta a significare una serie di caratteri numerici non nulla, e [A-Za-z0-9\-\.]+, vale a dire una serie di caratteri alfanumerici non nulla con l'aggiunta di caratteri speciali come - e . .

Il target riporta il link "reale", quello che PHP dovrà considerare per ottenere le informazioni relative a quell'articolo, a cui viene passato il parametro $1, vale a dire il "risultato" della prima espressione regolare contenuta nel pattern.

Per quanto riguarda i flag abbiamo usato NC per un matching case insensitive e L per specificare al modulo Rewrite di fermarsi e non processare altre regole ogni volta che questa viene soddisfatta. 

 

In questo modo i link agli articoli risulteranno più leggibili e più sensati, sia per gli esseri umani che per un "robot" come il Search Engine che, si spera, sarà più contento.


url seo apache mod_rewrite rewrite rule htaccess siamofatticosi
  • Telegram
  • Whatsapp
chat

Commenti