Lo so, correggere i redirect spesso può essere frustrante, soprattutto quando non si trova un pattern che ti aiuta a creare delle regole.
Tuttavia, in questa guida ti spiegherò come effettuare i reindirizzamenti[redirect] attraverso il file .htaccess.
Ma aspetta, non è tutto:
Ti spiegherò come ottimizzare il tuo sito web ed aumentarne le prestazioni.
Seguimi
Ho creato una guida sul file .htaccess raccogliendo tutte le informazioni che ho acquisito con la mia esperienza sul posizionamento sui motori di ricerca.
Questa lista sarà sempre aggiornata (tempo permettendo).
Pronto? Cominciamo.
Reindirizzare il tuo vecchio dominio verso il nuovo – Redirect 301 con .htaccess
Indice Contenuti
- Reindirizzare il tuo vecchio dominio verso il nuovo – Redirect 301 con .htaccess
- Reindirizzare l’intero sito con .htaccess
- Abilitare la compressione Gzip con .htaccess
- Aggiungere Expire Headers
- Evitare hotlinking delle immagini
- Rimuovere il www dalle url
- Evitare la pagina bianca degli errori
- Aumentare la velocità del sito con un miglior caching
- Disattivare il caching per alcuni tipi di files
- Comprimere i file
- Reindirizzare tutti i feed su Feedburner.com
- Evitare l’accesso ai backup del tuo sito
- Proteggere una directory con un password con .htaccess
- Reindirizzamento del sito verso https (ssl)
- Redirect da non www a www
- Preventivare il listing di una directory
- Specificare il limite upload dei file per PHP in htaccess
- Implementare la cache con il file .htaccess
- Bloccare le richieste basate su User-Agent Header
- Forzare UTF-8
- Cambiare la pagina di default Index
- Bloccare l’accesso al file .htaccess
- Bloccare l’accesso da determinati siti
- Bloccare determinati Ip sul proprio sito
- Disabilitare l’esecuzione di script per aumentare la sicurezza delle cartelle
Redirect 301 /vecchiapagina.html http://www.tuosito.com/nuovapagina.html
Reindirizzare l’intero sito con .htaccess
Redirect 301 / http://nuovosito.com/
Abilitare la compressione Gzip con .htaccess
<ifModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </ifModule>
oppure
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </IfModule>
oppure
SetOutputFilter DEFLATE AddOutputFilter DEFLATE text/plain AddOutputFilter DEFLATE text/xml AddOutputFilter DEFLATE application/xhtml+xml AddOutputFilter DEFLATE text/css AddOutputFilter DEFLATE application/xml AddOutputFilter DEFLATE image/svg+xml AddOutputFilter DEFLATE application/rss+xml AddOutputFilter DEFLATE application/atom_xml AddOutputFilter DEFLATE application/x-javascript AddOutputFilter DEFLATE application/x-httpd-php AddOutputFilter DEFLATE application/x-httpd-fastphp AddOutputFilter DEFLATE application/x-httpd-eruby AddOutputFilter DEFLATE text/html SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch ^MSIE !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \.iso$ no-gzip dont-vary
Aggiungere Expire Headers
<FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$"> Header set Expires "Tue, 16 Jun 2020 20:00:00 GMT" </FilesMatch>
oppure
# Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 month" # My favicon ExpiresByType image/x-icon "access plus 1 year" # Images ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" # CSS ExpiresByType text/css "access 1 month" # Javascript ExpiresByType application/javascript "access plus 1 year"
Nota sugli Expires Header in wordpress
L’aggiunta degli expires headers non influisce sul tempo di caricamento della pagina per la prima visita, ma per le visite successive fatte dai visitatori di ritorno. Puoi monitorare il tuo sito sapendo il numero di queries effettuate e il tempo impiegato incollando questa riga di codice sul tuo file footer.php
<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> secondi.
Evitare hotlinking delle immagini
Vuoi evitare che qualcuno prenda le immagini del tuo sito senza permesso? Come già saprai molti web master (pigri) preferiscono acquisire l’immagine linkando la url del tuo sito che la ospita, salvando ovviamente, anche la banda che invece sciuperai tu. Se vuoi prevenire questo, inserisci questo snippet di codice dentro il tuo file .htaccess e il gioco è fatto!
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?tuosito.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?tuosito.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
oppure
RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?tuosito.com/.*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
Rimuovere il www dalle url
Se vuoi rimuovere il www nel tuo sito, il seguente codice ti permetterà di farlo.
RewriteEngine On RewriteCond %{HTTP_HOST} !^tuosito.com$ [NC] RewriteRule ^(.*)$ http://tuosito.com/$1 [L,R=301]
Evitare la pagina bianca degli errori
Fornire al visitatore una inutile pagina bianca non è una cosa bella, è sempre preferibile creare delle pagine informative relativa all’errore con dei link che possono aiutare nella navigazione.
ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authrequest.html ErrorDocument 403 /errors/forbidden.html ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/servererror.html
Aumentare la velocità del sito con un miglior caching
Assicurati che non ci siano altri script di codici relativi al caching, eventualmente utilizza questo per decidere il tempo di caching dei file che nell’esempio ho impostato a 48 ore.
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=57600" </FilesMatch>
Disattivare il caching per alcuni tipi di files
# disabilita la cache per script e file dinamici <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch>
Comprimere i file
# comprimi text, 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
Reindirizzare tutti i feed su Feedburner.com
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC] RewriteRule ^feed/?.*$ http://feeds.feedburner.com/feed_uri [R=301,NC,L]
Evitare l’accesso ai backup del tuo sito
Se vuoi evitare che qualcuno acceda ai tuoi file di backup o ai sorgenti che hai inserito nel tuo account FTP, ti basterà inserire questo codice all’interno del tuo file .htaccess.
<FilesMatch "(\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|swp)|~)$"> ## Apache 2.2 Order allow,deny Deny from all Satisfy All ## Apache 2.4 # Require all denied </FilesMatch>
Proteggere una directory con un password con .htaccess
Per evitare l’accesso a determinate aree del tuo ftp come le directory, le immagini ed altre tipologie di file dovrai creare tue tipologie di file: il file .htaccess con il codice e il file .htpasswd con l’username e la password necessari per permettere l’accesso ai soli utenti consentiti.
Entra nella cartella che vuoi proteggere ed inserisci questo codice nel file .htaccess:
AuthType Basic AuthName "Area protetta da password" AuthUserFile /utente/antonio/htdocs/nomecartella/.htpasswd Require valid-user
- In pratica con la direttiva Authtype indichiamo la tipologia che ci interessa, ovvero basica.
- Con il valore AuthName indichiamo il nome che avrà la pagina che verrà visualizzata.
- Con AuthUserFile specifichiamo il percorso del file .htpasswd (deve essere assoluto)
- Require specifica quali utenti o gruppi di utenti possono accedere ai contenuti protetti, nell’esempio ho impostato valid-user che significa ogni utente che abbiamo creato nel file .htpasswd.
file .htpasswd
Questo file dovrai inserirlo nella posizione che hai specificato nel file .htaccess. All’interno devi inserire l’utente e la password per ogni utente che vuoi far accedere all’area protetta.
utente1:password_cifrata utente2:password_cifrata
In alternativa puoi utilizzare il tool htpasswd generator di mrwebmaster
Reindirizzamento del sito verso https (ssl)
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Redirect da non www a www
RewriteEngine On RewriteCond %{HTTP_HOST} ^tuosito.com\.net$ RewriteRule (.*) http://www.tuosito.com/$1 [R=301,L]
Preventivare il listing di una directory
Options -Indexes
Specificare il limite upload dei file per PHP in htaccess
php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200
Implementare la cache con il file .htaccess
# year <filesmatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$"=""> Header set Cache-Control "public" Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" Header unset Last-Modified </filesmatch> #2 hours <filesmatch "\.(html|htm|xml|txt|xsl)$"=""> Header set Cache-Control "max-age=7200, must-revalidate" </filesmatch> <filesmatch "\.(js|css)$"=""> SetOutputFilter DEFLATE Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" </filesmatch>
Bloccare le richieste basate su User-Agent Header
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT
Forzare UTF-8
Usa questo codice per far decodificare la tua pagina in utf-8
AddDefaultCharset utf-8
Cambiare la pagina di default Index
DirectoryIndex prova.html
Bloccare l’accesso al file .htaccess
# rendi sicuro il tuo htaccess file <Files .htaccess> order allow,deny deny from all </Files> # evitare il viewing di uno specifico file <Files secretfile.jpg> order allow,deny deny from all </Files> # tipi di files multipli <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
Bloccare l’accesso da determinati siti
# block visitors referred from indicated domains <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} sitodabannare.com [NC,OR] RewriteCond %{HTTP_REFERER} sitodaescludere.com [NC,OR] RewriteRule .* - [F] </ifModule>
Bloccare determinati Ip sul proprio sito
Bloccare accessi da uno specifico indirizzo ip:
Deny from indirizzo_IP
bloccare tutti gli indirizzi IP con la stessa identificazione:
Deny from .sitodaescludere.uk
bloccare l’accesso da un intero range di ip inclusi nella rete:
Deny from 192.168
Disabilitare l’esecuzione di script per aumentare la sicurezza delle cartelle
# secure directory by disabling script execution AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI
Configuratore di file .htaccess online: http://www.htaccesseditor.com/
Risorse Utili (in inglese)
- htaccess tricks for seos
- guida al file htaccess di askapache
- htaccess best practics one&one
- sicurezza .htaccess
Se ti è piaciuta la mia guida al file .htaccess, mi aiuteresti a condividerla sui social network?
Se invece cerchi un consulente seo per il tuo sito, contattami!
4 commenti su “Gestire i Redirect e le ottimizzazioni del sito con il file .htaccess [2019]”
Complimenti! L’ho aggiunta tra i preferiti questa guida ricca di Snippet utili, sai tra colleghi quante volte si cerca su Google questi Snippet che non si ricordano mai… Qui sono tutti raggruppati, ottimo 🙂
Ciao Marco e benvenuto. Sono felice che hai trovato utile questa pagina. Se vuoi ricevere contenuti di qualità nella tua mail, registrati alla mia newsletter.
Salve, ho trovato molto buono questo articolo, a mia conoscenza il più completo in giro … Grazie. Solo a motivo dell’inesperienza relativa, ho un dubbio (per ora, 1 :-).. e ti chiedo di risolvermelo, poiche ipotizzo davvero semplissimo..per chi sà. Quando fai riferimento all'”evitare l’hotlinking delle immagini”, non son sicuro di un paio di cose:1-il mio sito non userà ..(ancora..) www ma li tu lo metti, è da escludere? e 2- sempre relazionato a ciò.. devo eliminare tutta la (www\.).. cioè non solo le www ma anche l’intera parentesi tutto incluso? …. se ritieni utile qualche altra specifica utile a riguardo…
Scusami, ma “strada scrivendo”, ne approffitto: cosa implica “implementare la cache file.ht.access? grazie.
Ciao Roberto, grazie per esser passato da qui.
La protezione hotlink si utilizza per evitare che altri siti (al di fuori del tuo) possano puntare alle tue immagini, rubandoti banda preziosa. Molti hosting offrono la possibilità di attivare l’hotlink direttamente da cpanel.L’operazione è identica con o senza il www del tuo sito web.
Riguardo l’implementazione della cache sul file htaccess, intendo che dovrai inserire degli appositi script per velocizzare l’intero sito, cosa che puoi anche fare utilizzando degli appositi plugin o moduli, in base al cms che stai utilizzando.