Velocizzate il vostro sito web con htaccess!

immagine-apache-htaccess
Guida completa: ottimizzare velocità sito web con .htaccess!

Velocizzate il vostro sito web con htaccess! Volete sapere come fare? Continuate a leggere questo articolo…

Questa è una guida che può essere applicata a qualsiasi tipo di sito web. Avevo inizialmente pensato di inserirla nella sezione vBulletin della community perché i test di comparazione che trovate nella guida sono relativi ad un installazione di vBulletin 4 (di proprietà di Ozzy47 – leggete la nota sul copyright alla fine dell’articolo), ma poi ho deciso di postarla come articolo qui nel portale degli articoli di Klayz. I codici che troverete qui sotto sono ottimi per velocizzare le vostre pagine sfruttando la cache e altri fattori a livello server e non. Buona ottimizzazione!

Ottimizzare velocità sito web con htaccess

Ok, prendiamo ad esempio il mio vecchio sito web (www.myfriendsspace.com/forum.php – adesso offline).
Questo è il test con un file .htaccess vuoto, WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 11:43:14

Adesso prendiamo il file .htaccess vuoto e inseriamo queste regole:

<FilesMatch "\.(gif¦jpe?g¦png¦ico¦css¦js¦swf)$">
Header set Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(ico)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 11:45:54

Come potete vedere, abbiamo migliorato il First Byte Time (link wiki lingua Inglese) da D a B.

Abbiamo ottenuto un miglioramento decente. Ma analizziamo il nostro risultato…

Per prima cosa: che cos’è la Cache Web? Il processo di Caching (Cache), quando si parla di hostare un sito web, è il salvataggio temporaneo dei contenuti. Per leggere una guida completa su cos’è la Cache: Che cos’è La Cache? – Articoli di Klayz.

Il codice qui sopra esegue due cose: imposta il Cache Control nelle immagini specificate e imposta una max age nel file ico, che è il file che vedete come icona del vostro sito nella tab del browser (maggiori info sul file ico).

Esistono due ragioni principali per utilizzare la cache web:

  • Per ridurre la latenza — Dato che la richiesta viene soddisfatta dalla cache invece che dal server di origine, il tempo di caricamento e di visualizzazzione viene ridotto, e in questo modo le nostre pagine saranno più performanti e veloci.
  • Per ridurre il traffico network — Dato che gli elementi in cache vengono riusati, ciò riduce la quantità di bandwidth richiesta dal cliente. Se ad esempio il cliente paga in base al traffico che consuma, questa tecnica gli permette di risparmiare sui costi di consumo.

Adesso invece, sempre partendo dal file htaccess vuoto, aggiungiamo queste regole:

# INIZIO W3TC Browser Cache
<IfModule mod_mime.c>
AddType text/css .css
AddType application/javascript .js
AddType application/x-javascript .js
AddType text/html .html .htm
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType text/xml .xml
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
# FINE W3TC Browser Cache

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 12:02:59

Come potete vedere, abbiamo migliorato il First Byte Time da D a C.

Miglioramento minimale. Ma vediamo in questo caso cosa è successo…

Per prima cosa, che cos’è Apache Module mod_mime? Questo modulo viene usato per associare diversi bit di dati “meta” (meta information) ai file in base all’estensione: mime-type, language, character set e encoding. Queste informazioni vengono inviate al browser e vengono utilizzate dal content negotiation. Leggete mod_negotiation per maggiori informazioni sul content negotiation.

In aggiunta, mod_mime può definire l’handler e i filtri per i contenuti generati e processati. Le direttive AddHandler, AddOutputFilter, e AddInputFilter controllano i moduli e gli script che servono il contenuto. La direttiva MultiviewsMatch permette a mod_negotiation di considerare come includere queste estensioni file rispettando Multiviews.
Se mod_mime associa le meta-informazioni con le estensioni dei file, il server core provvede invece a restituire tutte le direttive utilizzate per associare i file nei contenitori richiesti in base alle meta-informazioni (ad esempio, <Location>, <Directory>, o <Files>). Queste direttive includono ForceType, SetHandler, SetInputFilter, e SetOutputFilter.

Adesso invece, sempre partendo dal file htaccess vuoto, aggiungiamo queste regole:

# INIZIO E-Tag
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# FINE E-Tag

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 12:16:58
Come potete vedere, abbiamo migliorato il First Byte Time da D a C.

Ancora una volta un miglioramento minimale. Vediamo cosa è successo…

Per prima cosa, che cosa sono gli ETags?
Gli Entity tags (ETags) sono un meccanismo che viene utilizzato per determinare se il contenuto di un file nella cache del browser è uguale a quello del server di origine oppure no. Un “entità” è un “componente” (ad esempio immagini, script, stylesheet, etc.). Stando a Yahoo! Performance Rules, disabilitando gli ETags possiamo rendere le nostre pagine più veloci, diminuire il carico server e ridurre la bandwidth (larghezza banda).

Adesso invece, sempre partendo dal file htaccess vuoto, aggiungiamo queste regole:

# INIZIO Mime-Type
<IfModule mod_mime.c>
AddType text/css .css
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
# FINE Mime-Type

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 12:27:18

Come potete vedere, abbiamo migliorato il First Byte Time da D a C.
Ancora una volta un miglioramento minimale. Vediamo cosa è successo…

Per prima cosa, che cosa sono i MIME types?
MIME sta per “Multipurpose Internet Mail Extensions”. E’ un modo di identificare i file su internet in base alla loro natura e al loro formato. Ad esempio, utilizzando il valore header “Content-type” definitito in una risposta HTTP, il browser può aprire il file con il corretto plugin o la corretta estensione.

I MIME types impostano i file e le loro estensioni. Ad esempio, un file ‘.html’ si riferisce a un documento HTML, un file ‘.zip’ si riferisce ad un Archivio ZIP, etc. Il server ha bisogno di sapere come comportarsi anche in base a queste informazioni.

Adesso invece, sempre partendo dal file htaccess vuoto, aggiungiamo queste regole:

# INIZIO Expires Headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A2628000
ExpiresByType text/richtext A3600
ExpiresByType image/svg+xml A3600
ExpiresByType text/plain A3600
ExpiresByType text/xsd A3600
ExpiresByType text/xsl A3600
ExpiresByType video/asf A2628000
ExpiresByType video/avi A2628000
ExpiresByType image/bmp A2628000
ExpiresByType application/java A2628000
ExpiresByType video/divx A2628000
ExpiresByType application/msword A2628000
ExpiresByType application/x-msdownload A2628000
ExpiresByType image/gif A2628000
ExpiresByType application/x-gzip A2628000
ExpiresByType image/x-icon A2628000
ExpiresByType image/jpeg A2628000
ExpiresByType application/vnd.ms-access A2628000
ExpiresByType audio/midi A2628000
ExpiresByType video/quicktime A2628000
ExpiresByType audio/mpeg A2628000
ExpiresByType video/mp4 A2628000
ExpiresByType video/mpeg A2628000
ExpiresByType application/javascript A2628000
ExpiresByType application/x-javascript A2628000
ExpiresByType application/vnd.ms-project A2628000
ExpiresByType application/vnd.oasis.opendocument.database A2628000
ExpiresByType application/vnd.oasis.opendocument.chart A2628000
ExpiresByType application/vnd.oasis.opendocument.formula A2628000
ExpiresByType application/vnd.oasis.opendocument.graphics A2628000
ExpiresByType application/vnd.oasis.opendocument.presentation A2628000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A2628000
ExpiresByType application/vnd.oasis.opendocument.text A2628000
ExpiresByType audio/ogg A2628000
ExpiresByType application/pdf A2628000
ExpiresByType image/png A2628000
ExpiresByType application/vnd.ms-powerpoint A2628000
ExpiresByType audio/x-realaudio A2628000
ExpiresByType application/x-shockwave-flash A2628000
ExpiresByType application/x-tar A2628000
ExpiresByType image/tiff A2628000
ExpiresByType audio/wav A2628000
ExpiresByType audio/wma A2628000
ExpiresByType application/vnd.ms-write A2628000
ExpiresByType application/vnd.ms-excel A2628000
ExpiresByType application/zip A2628000
</IfModule>
# FINE Expires Headers

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 12:34:42

Come potete vedere, abbiamo migliorato il First Byte Time da D a C e il Cache static content da F a A.

Abbiamo ottenuto un miglioramente abbastanza decente acora una volta. Vediamo cosa è successo in questo caso…

Per prima cosa, che cos’è l’Apache Module mod_expires? Questo modulo controlla le impostazioni per l’header Expires HTTP e le direttive di max-age dell’header Cache-Control HTTP.

Questi header HTTP sono delle istruzioni che vengono inviate al cliente e si riferiscono alla validità del documento e alla sua persistenza. Se è in cache, il documento può essere preso dalla cache invece che dal server di origine. Questo succede fino a quando questi tempi specifici non sono passati. Dopo di che la copia in cache viene considerata come “scaduta” (expired) e non più valida e quindi una nuova copia deve esser richiesta e scaricata dal server di origine.

Adesso invece, sempre partendo dal file htaccess vuoto, aggiungiamo queste regole:

# INIZIO Compressione file di testo
<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
  AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
  AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
  AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
  AddOutputFilterByType DEFLATE font/truetype font/opentype


  BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</ifModule>
# FINE Compressione file di testo

Ottenendo questo risultato: WebPagetest Test Result – Dulles : www.myf…pace.com/forum.php – 03/29/14 12:49:12

Come potete vedere, abbiamo migliorato il First Byte Time da D a C e il Compress Transfer content da F a A.

Ancora una volta un miglioramento decente. Vediamo cosa è successo…

Per prima cosa, che cos’è Apache Module mod_deflate? Quando un visitatore apre la vostra pagina viene effettuata una richiesta al server. Più grande è il file richiesto più tempo è necessario per visualizzarlo nel browser dell’utente. Gzip comprime le vostre pagine e i fogli di stile prima di inviarli al browser del cliente. Questo riduce i tempi di invio in modo elevato.

Il motivo dell’efficacia di Gzip è che i file in CSS e in HTML usano molti testi ripetuti e hanno molti spazi al loro interno, e dato che tutte queste cose vengono compresse, l’utilizzo di Gzip può ridurre la grandezza dei file anche fino al 70%! Gzip deve essere abilitato sul vostro server.


Il codice finale per il nostro .htaccess è il seguente (compresa anche qualche aggiunta per la sicurezza – se non avete vBulletin, rimuovete le regole per vietare l’accesso al file config.php):

# INIZIO W3TC Browser Cache
<IfModule mod_mime.c>
AddType text/css .css
AddType application/javascript .js
AddType application/x-javascript .js
AddType text/html .html .htm
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType text/xml .xml
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
# FINE W3TC Browser Cache

# INIZIO E-Tag
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# FINE E-Tag

# INIZIO Nega accesso al file htaccess.
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
# FINE Nega accesso al file htaccess.

# INIZIO Nega accesso per il file config.php di vBulletin (SOLO PER VBULLETIN)
<Files includes/config.php> 
Order allow,deny
Deny from all
</Files>  
# FINE Nega accesso per il file config.php di vBulletin (SOLO PER VBULLETIN)

# INIZIO Mime-Type
<IfModule mod_mime.c>
AddType text/css .css
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
# FINE Mime-Type

# INIZIO Expires Headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A2628000
ExpiresByType text/richtext A3600
ExpiresByType image/svg+xml A3600
ExpiresByType text/plain A3600
ExpiresByType text/xsd A3600
ExpiresByType text/xsl A3600
ExpiresByType video/asf A2628000
ExpiresByType video/avi A2628000
ExpiresByType image/bmp A2628000
ExpiresByType application/java A2628000
ExpiresByType video/divx A2628000
ExpiresByType application/msword A2628000
ExpiresByType application/x-msdownload A2628000
ExpiresByType image/gif A2628000
ExpiresByType application/x-gzip A2628000
ExpiresByType image/x-icon A2628000
ExpiresByType image/jpeg A2628000
ExpiresByType application/vnd.ms-access A2628000
ExpiresByType audio/midi A2628000
ExpiresByType video/quicktime A2628000
ExpiresByType audio/mpeg A2628000
ExpiresByType video/mp4 A2628000
ExpiresByType video/mpeg A2628000
ExpiresByType application/javascript A2628000
ExpiresByType application/x-javascript A2628000
ExpiresByType application/vnd.ms-project A2628000
ExpiresByType application/vnd.oasis.opendocument.database A2628000
ExpiresByType application/vnd.oasis.opendocument.chart A2628000
ExpiresByType application/vnd.oasis.opendocument.formula A2628000
ExpiresByType application/vnd.oasis.opendocument.graphics A2628000
ExpiresByType application/vnd.oasis.opendocument.presentation A2628000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A2628000
ExpiresByType application/vnd.oasis.opendocument.text A2628000
ExpiresByType audio/ogg A2628000
ExpiresByType application/pdf A2628000
ExpiresByType image/png A2628000
ExpiresByType application/vnd.ms-powerpoint A2628000
ExpiresByType audio/x-realaudio A2628000
ExpiresByType application/x-shockwave-flash A2628000
ExpiresByType application/x-tar A2628000
ExpiresByType image/tiff A2628000
ExpiresByType audio/wav A2628000
ExpiresByType audio/wma A2628000
ExpiresByType application/vnd.ms-write A2628000
ExpiresByType application/vnd.ms-excel A2628000
ExpiresByType application/zip A2628000
</IfModule>
# FINE Expires Headers

# INZIO Compressione file testo
<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
  AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
  AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
  AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
  AddOutputFilterByType DEFLATE font/truetype font/opentype

# rimozione bug browser
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</ifModule>
# FINE Compressione file testo

# INIZIO Cache-Control Headers
<ifModule mod_headers.c>
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$">
    Header set Cache-Control "max-age=29030400, public"
  </filesMatch>
  <filesMatch "\.(css)$">
    Header set Cache-Control "public"
  </filesMatch>
  <filesMatch "\.(js)$">
    Header set Cache-Control "private"
  </filesMatch>
  <filesMatch "\.(x?html?|php)$">
    Header set Cache-Control "private, must-revalidate"
  </filesMatch>
</ifModule>
# FINE Cache-Control Headers

# Blocco per User-agent Libwww-perl
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* – [F,L]

# proc/self/environ? no!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})

##
## Commented version of Rewrite rules attributed to Ronald van den Heetkamp
## Comments by http://bodvoc.com
#
# Prevent use of specified methods in HTTP Request
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
# Block out use of illegal or unsafe characters in the HTTP Request
RewriteCond %{THE_REQUEST} ^.*(r|n|%0A|%0D).* [NC,OR]
# Block out use of illegal or unsafe characters in the Referer Variable of the HTTP Request
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
# Block out use of illegal or unsafe characters in any cookie associated with the HTTP Request
RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
# Block out use of illegal characters in URI or use of malformed URI
RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|">|"<|/|..).{0,9999}.* [NC,OR]
# NOTE - disable this rule if your site is integrated with Payment Gateways such as PayPal 
# Block out  use of empty User Agent Strings
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
# Block out  use of User Agent Strings beginning with java, curl or wget
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
# Block out  use of User Agent Strings containing specific robot (crawler) identifiers
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
# Block out  use of User Agent Strings containing references to specific crawler libraries
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|scan).* [NC,OR]
# Block out  use of illegal or unsafe characters in the User Agent variable
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
# Measures to block out  SQL injection attacks
RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
# Block out  reference to localhost/loopback/127.0.0.1 in the Query String
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
# Block out  use of illegal or unsafe characters in the Query String variable
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
#
## End of commented Rewrite directives

Considerate che queste regole funzioneranno se:

Ricordate che queste regole reagiranno in modo differente su vari host e su vari siti web. Provatele e se avete dei problemi vi aspettiamo sulla community di Klayz.com per risolverli insieme!

Articolo tradotto e riadattato da Klayz.com. Si ringrazia Ozzy47 per i permessi di traduzione dell’articolo sopra esposto. Articolo originale (lingua inglese): Speed up your site via htaccess.

 
6 Kudos
Non ti
muovere!

Condividi il Post