Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

Linux:Htaccess

From Aino Wiki

Jump to: navigation, search

l'.htaccess (hypertext access) è un file di configurazione a livello di file-system directory supportato in diversi web servers (come Apache), che consente di decentralizzare la gestione della configurazione del web server. E' in grado di sovrascrivere la configurazione globale del server per una specifica directory in cui si trova e TUTTE le cartelle contenute in cascata. Contiene un elenco di direttive interpretate runtime.
Scopo originario dell'.htaccess come dice il suo nome, è quello di consentire il controllo di accessi a livello di directory, per esempio richiedendo la password per accedere al contenuto. Oggi è anche usato per sovrascrivere impostazioni includendo anche la definizione della tipologia del contenuto, CGI handlers, etc. (da wikipedia)
Ha la stessa sintassi del file di configurazione di Apache, l'httpd.conf .

Vantaggi

Consente una modifica immediata senza necessità di riavvio del web server, ciò è indispensabile nell'hosting condiviso (shared hosting). Consente personalizzazioni a livello di utente in server multi user, come per lo shared hosting appunto.

Svantaggi

Il suo compito lo svolge a discapito delle prestazioni. Infatti ad ogni richiesta HTTP c'è un accesso al file system per interpretare eventuali .htpaccess.

E' possibile migrare in automatico da .htaccess a httpd.conf.

Alcuni esempi, con descrizione

IfModule

Definisce una sezione all'interno della quale eseguire delle direttive. La sezione è eseguita solo se la condizione è verificata, le condizioni riguardano la presenza o meno di moduli inclusi nel httpd di Apache.

es: <IfModule mod_php5.c> php_flag engine 0 </IfModule> si può usare anche !, nel precedente esempio sarebbe: <IfModule !mod_php5.c>

Mini guida

Da javascriptkit.com

Documentazione di errori

In caso di errori HTTP (HTTP status code e errori) come 400, 401, 403, 404, 500, ne consente la gestione ridirezionando verso una pagina descrittiva. es:
ErrorDocument code /directory/filename.ext o
ErrorDocument 404 /errors/notfound.html
Lo slash / rappresenta la root del sito.

Protezione con password

es, indicando prima lo username e poi la password:
wsabstract:y4E7Ep8e7EYV

Abilitazione SSI

Quando non si riesce ad usare l' SSI (HTML Server Side Include) perché il provider lo vieta è possibile usarlo via .htpaccess. (Attenzione l'uso può esser considerato 'hacking' o violazione delle regole dell'hosting).
Esempio:

AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes

La prima linea dice al server che le pagine con estensione .shtml sono valide.
La seconda linea aggiunge un handler in tutti i files con estensione .shtml.
L'ultima è un tecnicismo.

Blocco IP

es:

order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
allow from all

Blocco utenti\siti mediante referrer

Per bloccare specifici utenti o traffico da determinati siti. Quest'ultima attività è chiamata 'referral' ed avviene anche quando su altri siti puntano a immagini/risorse che sono sul proprio sito. Tutto ciò si evincve dai logs del proprio sito.
Attenzione, bloccare gli accessi attraverso con referrer nell'htpaccess richiede che sia installato un modulo apache il mod_rewrite esempio di ridirezionamento da sito X:

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite\.com [NC]
RewriteRule .* - [F]

La linea con "Options +FollowSymlinks" va scommentata se il tuo server non è configurato con FollowSymLinks nella sua sezione in httpd.conf, e tu hai un errore 500 (Internal Server error) quando usi il codice di prima così com'è.===Blocchi 'bad bots' e site rippers===

RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
...
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
RewriteRule ^.* - [F,L]

Cambio pagina di default per la directory

Si vuol cambiare il file di ingresso di default ad es da 'index.php' a 'filename.html':

DirectoryIndex filename.html

Oppure in alternativa se ne posson indicare diversi in sequenza separati da spazi:

DirectoryIndex filename.html index.cgi index.pl default.htm

Redirect

In caso di modifiche significative al sito affinché l'utente non abbia disagi lo si può ridirezionare su una pagina di cortesia. Per una sola pagina (la sintassi definisce un cambiamento da una pagina 'oldfile.html' alla definitiva anche su altro sito):

Redirect /olddirectory/oldfile.html http://yoursite.com/newdirectory/newfile.html

Per dirottare l'intero contenuto di una directory:

Redirect /olddirectory http://yoursite.com/newdirectory/

Prevenzione visualizzazione htaccess

order allow,deny
deny from all


Aggiunta di MIME types

Se il sito non è abilitato a determinati contenuti ecco come eludere il problema:

AddType application/x-shockwave-flash swf

Prevenzione hot linking nelle immagini etc

Esempio:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css)$ - [F]

Prevenzione visualizzazione contenuto directory

Per non visualizzare nulla:

IndexIgnore *

per escludere solo le immagini

IndexIgnore *.gif *.jpg

Se il server è configurato per negare la visualizzazione del contenuto ma tu vuoi comunque far vedere il contenuto di una cartella:

Options +Indexes

al contrario per non visualizzare nulla:

Options -Indexes

Questo però vale per la directory corrente mentre se lo si vuole applicare ricorsivamente ad ogni sotto directory occorrerà aggiungere All:

Options All -Indexes

ATTENZIONE però, l' All mi è capitato di vedere che genera un ERRORE tracciato nel log di apache: "Option All not allowed"

Conclusioni

Per un elenco completo delle direttive Apache usabili in un file .htpaccess dare un'occhiata al sito: apache.org.


Linux Ubuntu


Configurazioni

Author Giuseppe AINO