Alcuni snippet di codice htaccess pronti all’uso per tutti i webmaster: come velocizzare il sito, evitare l’hotlinking, mettere in sicurezza WordPress ed altro ancora.
Evitare l’ hotlinking
Della serie “cari vecchi suggerimenti”: per evitare sprechi di banda da parte di anonimi webmaster che utilizzano direttamente l’URL delle tue immagini nei loro siti, puoi ricorrere a questo semplice accorgimento. Notate che nohotlink.jpg è l’immagine statica che comparirà a chi prova a ricorrere a questa deprecata pratica.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?miosito\.org/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /img/nohotlink.jpg [L]Forzare lo slash finale negli URL
Dal punto di vista SEO è molto utile, ed è comodo per i visitatori in quanto da’ una sensazione di uniformità, imporre lo slash finale su tutti gli URL: dato che miosito.com/abc è diverso da miosito.com/abc/, dare uniformità alla cosa è un qualcosa di molto importante. A tale riguardo basta fare uso del seguente snippet htaccess:
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]Download obbligato di alcuni tipi di file
Per fare in modo che i vostri lettori scarichino un file di un certo tipo quando ci cliccano sopra, senza vederlo ad esempio dentro al browser.
<Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files> <Files *.pdf> ForceType application/octet-stream Header set Content-Disposition attachment </Files>
Permettere l’embed di un font
Fermo restando che potete ricorrere a Google Font senza dover configurare nulla, l’embed di font da file esterni al vostro sito deve essere abilitato, altrimenti browser come Firefox non li caricheranno.
<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://tuosito.org"
</IfModule>
</FilesMatch>Impostare il caching e velocizzare il tuo sito
Anche qui, potete imporre questa modifica da un plugin di WordPress per il caching, quanto segue vale in generale per qualsiasi sito, ed è una delle recommendation preferite da Google nel 2011 (sembrerebbe che la velocità di caricamento del sito sia un vero e proprio fattore di ranking).
# 1 ANNO <FilesMatch "\.(ico|pdf|flv)$"> Header set Cache-Control "max-age=29030400, public" </FilesMatch> # 1 SETTIMANA <FilesMatch "\.(jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> # 2 GIORNI <FilesMatch "\.(xml|txt|css|js)$"> Header set Cache-Control "max-age=172800, proxy-revalidate" </FilesMatch> # 1 MINUTO <FilesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=60, private, proxy-revalidate" </FilesMatch>
Bloccare lo spam sul tuo sito in WordPress
La maggioranza dello spam di WordPress arriva dall’accesso diretto al file wp-comments-post.php, utilizzato dagli spam-bot per mandarvi commenti e link spazzatura. Perchè allora non impedire loro l’accesso con queste righe di codice? (mod_rewrite deve essere abilitato con la prima riga di codice).
RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*nometuodominio.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Redirect al sito mobile
È possibile effettuare il redirect al vostro sito mobile per i dispositivi abilitati: nella pratica, comunque, se avete WordPress potete fare lo stesso mediante degli opportuni plugin e senza manipolare il file htaccess.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- The line below excludes the iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^(.*)$ /m/ [L,R=302]Unificare i formati di feed RSS
Fino a qualche tempo fa utilizzavamo RSS, Atom e Rdf : attualmente RSS sembra essere diventato lo standard, e così sarebbe opportuno reindirizzare tutti i feed del vostro sito ad esso. Il seguente frammento di codice htaccess può essere utilizzato a tale scopo, direttamente in WordPress (e da modificare per gli altri CMS)
<IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/ </IfModule>
Abilitare i video di HTML5 sul tuo sito
HTML5 offre potenzialità enormi dal punto di vista grafico e di prestazioni, tra cui la possibilità di inserire video in streaming senza bisogno di Flash. Quasi nessuno di quelli che ne (s)parlano ci ha mai raccontato che è necessario abilitare questa feature mediante htaccess: ecco come fare.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swfLog degli errori PHP
Se il sito è appena passato da sviluppo a rilascio, potete considerare di fare un bel log degli errori all’interno di un file apposito, in modo da tenere sotto controllo errori subdoli e non mostrarli all’utente.
# display no errs to user php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off # log to file php_flag log_errors on php_value error_log /location/to/php_error.log
Lanciare codice PHP dentro dei file JavaScript
Se volete fare in modo che i vostri file Javascript leggano i contenuti dei file PHP (ad esempio del database), potete fare uso del seguente accorgimento. Personalmente preferisco il più semplice var jsVar = "<?php echo $phpVar ?>";, ma in alcuni casi può essere comodo poter lanciare file PHP direttamente dentro file JS.
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js <FilesMatch "\.(js|php)$"> SetHandler application/x-httpd-php </FilesMatch>
Fonti:





Pingback: Wordpress & sicurezza: modificare i permessi dei file con CHMOD.
Pingback: Omnia » Post Topic » Weekly+ (11/2012)