Come creare file htaccess ottimizzato seo

Tempo di lettura: 6 minuti

Un file htaccess configurato per il Seo può permetterci di ottimizzare il nostro sito web, favorendone il posizionamento sui motori di ricerca.

COSE IL FILE .HTACCESS ?

Il file .htaccess non è niente altro che un file di testo contenenti le direttive del web server apache. Questo file è contenuto in un server Apache, quindi non cercatelo su Windows perchè non lo troverete.
Quali sono le regole da tenere in considerazione ? Vediamole una a una :

1 – URL CANONICA

url-canonica
Quando viene digitato l’indirizzo di un sito internet solitamente viene scritto in questo modo (www.miosito.it) ; come potete vedere il sito web presenta un “www”. può anche succedere però, che per fare più veloce, venga scritto in questo modo (miosito.it), senza far precedere il www.
Ciò vuol dire che per voi è la stessa cosa, ma per i motori di ricerca http://www.miosito.it è diverso da http://miosito.it. Anche se voi, digitando lurl, ottenete lo stesso sito web, in realtà i motori di ricerca possono essere dubbiosi su quale url è quello corretto per gli indici, il che può portare a contenuti duplicati.
Questo snippet fa in modo che il tuo sito non dia problemi di url canonica.

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

2 – URL SEO FRIENDLY

url-seo-friendly
Un altro importante fattore che predilige un buon posizionamento sono il formato delle url. Esse devono essere Seo-Friendly. Ecco alcuni esempi di url che non vanno bene :

http://www.idiavolitorino.it/contatti.php?id=22
http://www.idiavolitorino.it/contatti.php?id=22&var=32

Non vanno bene perchè contengono caratteri speciali e non sono capibili dai motori di ricerca.
Ecco invece cosa intendo per Seo-Friendly:

http://www.idiavolitorino.it/campionati-e-classifiche/
http://www.idiavolitorino.it/2014/12/18/articolo desempio/
http://www.idiavolitorino.it/organigramma-societario/

Un url di questo tipo è molto più capibile dai motori di ricerca, in quanto più pulito e chiaro da interpretare.
Ps: Se utilizzate un CMS come Joomla o Worpdress il tutto sarà facilitato perche cè proprio limpostazione su come personalizzare i permalink.
Vediamo un esempio pratico di come trasformare un url per farla diventare Seo Friendly.
Mettiamo che abbiamo un url di questo tipo:

http://www.miosito.it/contatti.php?id=32

Applicando una regola, possiamo riscrivere l’url in questo modo:

http://www.miosito.it/contatti-32.html
RewriteEngine On
RewriteRule ^prodotto-([0-9]+)\.html$ prodotti.php?id=$1

In questo modo l’url è già Seo Friendly, ma se vogliamo fare le cose ottimizzandole al massimo dobbiamo fare in modo di avere un url dove non si veda l’estensione; Se abbiamo url del tipo :

RewriteEngine On
http://www.miosito.it/chi-siamo.html oppure
http://www.miosito.it/cosa-facciamo.html

con questo snippet verrà :

http://www.miosito.it/chi-siamo/
http://www.miosito.it/cosa-facciamo/
RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

Ancora meglio sarà togliere lo slash finale nell’url facendo in modo che diventi :

http://www.miosito.it/chi-siamo
http://www.miosito.it/cosa-facciamo
RewriteEngine On
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1

Cosi abbiamo un url perfettamente ottimizzata, chiara e semplice.

3 – COMPRESSIONE GZIP

compressione-gzip
Perchè abilitare la COMPRESSIONE GZIP ?
Essa è una azione importante da effettuare sul sito web, in quanto permette un’ottimizzazione delle pagine web in termini di velocità.
Ogni volta che un utente clicca sulla vostra pagina, essa porta via della banda; facendo ciò si risparmia sulla banda scaricando un quantità inferiore di dati, che vi porterà beneficio sia a voi in termini di banda mensile nell’hosting, che agli utenti che vedranno caricare la pagina più velocemente.
Se volete controllare che la regola nel file htaccess abbia avuto effetto potete controllarla direttamente da questo indirizzo http://checkgzipcompression.com/

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html


Header append Vary User-Agent env=!dont-vary

AddOutputFilterByType DEFLATE text/css application/x-javascript text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon

4 – GESTIONE DELLA CACHE

gestione-della-cache
Se utilizzate un CMS come WordPress vi consiglio il plugin WP Super Cache;
Semplicemente viene detto agli utenti che visitano il sito dopo quanto dovranno essere ricaricati in cache quei file. Ottimizzando il processo con i tempi giusti, si permetterà di ottenere una maggiore velocità di caricamento delle pagine web.

# durata della memoria cache mensile

Header set Cache-Control “max-age=2592000″

# durata della memoria cache settimanale

Header set Cache-Control “max-age=604800″

# durata della memoria cache giornaliera

Header set Cache-Control “max-age=43200″

5 – CREARE REDIRECT 301

301-redirect
Questo è probabilmente luso più comune che abbiamo per il file htaccess.
In termini di Seo è importantissimo, in quanto si comunica ai motori di ricerca che una pagina è stata spostata verso un nuovo url.
Per implementare un reindirizzamento 301, è sufficiente posizionare la seguente riga di codice nel file htaccess :

Redirect 301 / nome-pagina-da-rimuovere  http://www.tuosito.com/nome-nuova-pagina-da-mettere

Nota – Il vecchio nome della pagina non richiede per forza lurl al completo, ma anche solo la versione corta.

per esempio, se volevo reindirizzare questa pagina :

http://www.libero.it/viaggi/america/

Il codice sarebbe simile a questo :

Redirect 301 /viaggi/america http://www.libero.it/viaggi/viaggio-in-america

Con il redirect 301 è possibile optare a soluzioni differenti :

redirect 301 di un intero sito a un nuovo dominio

Questo è sorprendentemente semplice e facile da fare. Basta incollare la riga sotto alla cima del file htaccess :

RewriteEngine On
RewriteRule ^/(.*)$ http://www.nuovo-dominio.it/$1 [R=301,L]
 

Miraccomando dovete inserire questo codice nel file htaccess del vecchio dominio.
IMPORTANTE – Assicurarsi che lintero sito (tutti i file e cartelle) vengono copiati attraverso al nuovo dominio utilizzando la stessa struttura di directory. In caso contrario, si tradurrà in 404 errori generato, come le vostre vecchie pagine saranno 301 reindirizzamento di nuove pagine che non esistono.

Redirect 301 da una directory ad unaltra

Ecco come impostare un redirect 301 per unintera directory.
Nellesempio riportato di seguito, tutti i file in /vecchia-directory/
Saranno reindirizzati a /blog/vecchia-directory/:

RedirectMatch 301 /vecchia-directory/(.*) http://www.yourdomain.com/blog/vecchia-directory/$1

Redirect 301 della versione non www del sito per la versione www (e viceversa)

Riorientare la versione non www di un sito per la versione www è più facile di quanto si possa pensare. E la buona notizia è che non cè bisogno di stare lì e fare un redirect 301 per ogni pagina del sito.
È invece possibile utilizzare qualcosa chiamato come regola di riscrittura, che dice semplicemente che ogni volta che qualsiasi pagina del tuo sito , chiamato senza www, sara reindirizzato al suo equivalente www.

RewriteEngine su
RewriteCond% {HTTP_HOST}! ^ www \.
(. *) RewriteRule ^ $ http: //www.% {HTTP_HOST} / $ 1 [R = 301, L]

E in caso si voleva fare il contrario :

RewriteEngine su
% RewriteCond {HTTP_HOST}.
RewriteCond% {HTTP_HOST}! ^ Esempio \ .it
RewriteRule (. *) Http://example.com/$1 [R = 301, L]

IMPORTANTE – A seconda della configurazione del file di configurazione del server, si può o non può avere bisogno di una ulteriore linea di codice di sopra della linea “RewriteEngine on”.
Quanto sopra funziona bene nella maggior parte dei casi, se non lo fa, è necessario inserire la seguente riga sopra la linea “RewriteEngine on”:
Opzioni + FollowSymLinks

6 – PAGINA 404

pagina-404
Creare una pagina che restituisce un errore 404 è importantissima a livello di User experience per l’utente.
Se un’ utente clicca su una pagina che non ha alcun contenuto, o comunque che non è presente è bene avvisarlo come si deve. Tutto quello che dovete fare è caricare il tuo design e pagina 404, e quindi inserire la seguente riga di codice nel file htaccess :

ErrorDocument 404 /cool404.html

NOTA – /cool404.html è il nome della pagina 404, quindi voi inserirete il percorso della vostra pagina creata.

7 – ASSOCIAZIONE DOMINIO

É importante fare in modo che il Vostro indirizzo ip del sito web punti effettivamente al vostro dominio.
Per sapere l’indirizzo ip del vostro sito andare qui : https://emprsitiweb.com/come-trovare-indirizzo-ip-sito-web/.
Se il sito è in esecuzione su server Apache , potete mettere queste righe nel file htaccess dopo la linea RewriteEngine on; XXX\.XXX\.XXX\.XXX sta al posto del vostro indirizzo ip :

RewriteCond %{HTTP_HOST} ^XXX\.XXX\.XXX\.XXX
RewriteRule (.*) http://www.yourdomain.com/$1 [R=301,L]

8 – libwww – perl

Il mondo degli hacker, bot e gli spammer sono diventati una seria minaccia per molti siti web .
libwww – perl ( LWP ) è una libreria client / server WWW per Perl e può aiutare molti hacker, spammer e bot per eseguire gli attacchi sul tuo sito .
Se il sito è in esecuzione su server Apache , puoi mettere queste righe nel file htaccess dopo la linea RewriteEngine on:

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* – [F,L]

Spero che l’articolo sia di vostro gradimento e soprattutto utile 🙂

7 commenti su “Come creare file htaccess ottimizzato seo”

  1. Ciao Emiliano.

    Vorrei chiedere come si fa un reindirizzamento di errore 404 di una URL con slash finale forzato in htaccess. Ad esempio http://oristano.altervista.org/pagina-inesistente/

    Una URL del genere, nel mio sito, non reindirizza alla pagina 404.php creata ma visualizza il template del sito senza contenuto.

    Sia il file htaccess che il file 404.php si trovano nella ROOT del sito

    Posto il mio codice htaccess

    Options +FollowSymLinks -MultiViews
    AddDefaultCharset UTF-8
    RewriteEngine On
    RewriteBase /
    #
    # EVITA PROBLEMI URL CANONICA
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    #
    # PROC/SELF/ENVIRON? NO!
    RewriteCond %{QUERY_STRING} proc/self/environ [OR]
    #
    # BLOCCO ACCESSO AL FILE .HTACCESS
    <Files .htaccess>
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>
    #
    # FORZA AGGIUNTA DELLO SLASH / ALLA FINE DELLA URL
    RewriteCond %{REQUEST_URI} /+[^\.]+$
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
    #
    # RIMUOVE INDEX.PHP DALLA URL
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
    #
    # RISCRIVE URL
    RewriteRule ^([^/]*)/$ index.php?id=$1 [L]
    RewriteRule ^([^/]*)/([^/]*)/$ index.php?id=$1&sezione=$2 [L]
    #
    php_flag magic_quotes_gpc off
    #
    # ERRORE PAGINA NON TROVATA
    ErrorDocument 404 /404.php
    #
    # COMPRESSIONE FILE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch ^MSIE !no-gzip !gzip-only-text/html
    #
    # COMPRIMERE TESTO, HTML, JAVASCRIPT, CSS, XML
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    

    Le Url del mio sito sono tutte indicizzate sui motori di ricerca con lo slash finale tipo (http://oristano.altervista.org/oristano/ eventualmente dovessi cambiarle, secondo il tuo consiglio, dovrei impostare un redirect tipo?

    Redirect 301 /oristano/ http://oristano.altervista.org/oristano

    Dovrei eliminare lo slash finale anche nei link del menu del sito?

    Ti ringrazio per l’attenzione.

  2. Ha senso usare un file htaccess sul theme-child per evitare che venga sovrascritto al successivo aggiornamento di wordpress? Ho provato ma non funziona

    1. Ciao Ennio,

      il tema child serve appunto per questi scopi, per essere al sicuro durante gli aggiornamenti, in modo da evitare che vengano sovrascritte eventuali modifiche al tema o ai file interni.

      Perchè vuoi creare un nuovo file .htaccess su un tema child? 😉

      1. Perche altrimenti con l’aggiornamento del tema le nuove direttive verrebbero sovrascritte se si inseriscono sul file htaccess della root. Quindi le nuove direttive devono essere inserite in htaccess del theme-child. Quindi come si deve fare? Ho provato ma non funziona.

        1. Diciamo che ogni aggiornamento è diverso da un altro e non saprei indicarti con esattezza se questo possa coinvolgere il tuo .htaccess creato o meno.
          Sinceramente non mi è mai capitato di creare un .htaccess per un tema child, ma trovo molto interessante il tuo quesito.

          Prova a dare un’occhiata qui se può aiutarti : https://stackoverflow.com/questions/36593369/can-i-add-htaccess-for-specific-page-in-child-theme-using-wordpress

          Nel frattempo mi informo e ritorno da te non appena ne so di più.

          Grazie ancora del tuo contributo! 🙂

  3. PianetaSvapo Sigarette elettroniche

    Ciao, ho letto con interesse il tuo articolo, che trovo molto interessante. Da un’analisi effettuata mi viene fuori che il mio htaccess non è ottimizzato per Seo. Come si può fare per capire in quale di questi parametri devo lavorare e qualche esempio pratico per migliorarlo? Uso Prestashop 1.7.7.3. Grazie!

  4. Buongiorno e complimenti per le tue capacità tecniche , volevo sapere cortesemente e se possibile quali errori ha il mio sito così da poter procedere alla correzione , critiche accettate anche perché sono incompetente in materia ,solo se vuoi ti ringrazio anticipatamente

Lascia un commento