Autore Topic: [GUIDA]I file .htaccess in Apache  (Letto 21446 volte)

Offline Niargo

  • Esploratore
  • **
  • Post: 60
    • Mostra profilo
[GUIDA]I file .htaccess in Apache
« il: 17 Set 2009, 15:10:20 »
In quest'articolo vedremo le funzionalità messe a disposizione dai file chiamati .htaccess, file che permettono di utilizzare direttive di apache specifiche le directory, per i file, per la gestione degli errori, per le rewrite rules, per configurare php e per tante altre cose ancora.

Cos'è un file .htaccess

I file .htaccess, che per comodità chiameremo solo htaccess, sono dei semplici file di testo contenenti le direttive di apache per la configurazione. Questi file possono essere editati con un normale editor di testo come notepad o context su windows, mentre su linux, ad esempio, con vi, nano o mcedit.

Come funziona

I file htaccess di apache funzionano in maniera estramente semplice: apache quando riceve una richiesta, prima di eseguirla, verifica se esiste un file htaccess nella cartella del file richiesto o in una cartella precedente, ed in caso lo legge e lo interpreta a run-time e si configura in modo da rispettare le direttive presenti all'interno di quel file. È molto importante notare che apache ricarica il file ad ogni richiesta in modo non dover essere riavviato in caso di modifiche, com'è invece necessario se viene modificato il file di configurazione principale.

Scope

L'ambito, o lo scope, dei file htaccess si restringe alla cartella nella quale è presente il file. L'utilizzo di direttive che richiamino, in qualsiasi modo, cartelle precedenti nell'albero delle directory provocherebberò un "Internal Server Error", ovvero un'errore di tipo 500. Lo Scope comprende anche tutte le sotto cartelle ed i relativi file presenti nella cartella principale.

Se si ha una struttura del genere:
Codice: [Seleziona]
directory1
  |
  |- sub-directory1
  |- sub-directory2

tutte le direttive presenti nel file htaccess della directory1 riguarderanno anche le due sub-directory.

È comunque possibile utilizzare la direttiva Directory o Files per limitare le direttive presenti all'interno del file ad una specifica locazione.

Eventuali file htaccess presenti nelle sub-directory della cartella contenete il file con le direttive, avranno una priorità maggiore rispetto all'htaccess principale ed usando quindi questo sistema è possibile annullare eventuali direttive acquisite da un'htaccess presente in una cartella padre.

Direttive Principali

Le direttive più importanti sono:

* Limit
* Files
* Order
* Deny/Allow

Queste infatti permettono di limitare l'accesso, o di garantirlo, a specifiche cartelle, o files. È anche possibile, sempre tramite queste direttive, dare accesso a specifici indirizzi ip o host.

Se si volesse bloccare l'accesso ad una cartella basterebbe utilizzare la direttiva Order e la direttiva Deny:
Codice: [Seleziona]
Order deny,allow Deny from all
È importante ricordarsi di scrivere deny,allow o allow,deny, i due parametri della direttva Order, senza spazi altrimenti si riceverà un Internal Server Error.
Per indicare ad apache di applicare delle direttive a uno specifico gruppo di files è possibile usare la direttiva Files:
Codice: [Seleziona]
<Files ~ ".*\.jpg$">
    Order deny,allow
    Deny from all
</Files>

Con questo codice si bloccherebbe l'accesso a tutte le immagini jpg presenti nella cartella e nelle sotto-cartelle.

Queste invece permettono di far loggare specifici utenti muniti di un'apposito username e password:

* AuthUserFile
* AuthName
* AuthType
* Require

Il loro utilizzo permette di abilitare l'accesso ai file e alle directory e sotto-directory presenti nella cartella che contiene il file con le direttive di apache. Utilizzando anche le direttive Files e Directory, insieme a quest'ultime, è possibile dare l'accesso a degli utenti a delle cartelle o file specifici.

Se ad esempio si volesse limitare l'accesso ai file jpeg all'utente pippo basterebbe utilizzare la direttiva Files in accoppiata alla direttiva Require:
Codice: [Seleziona]
AuthName "Titolo della finestra del login"
AuthUserFile /percorso/assoluto/a/.htpasswd
AuthType Basic
Require valid-user

<Files ~ ".*\.jpg$">
Require user pippo
</Files>

L'esempio è estremamente facile da comprendere, infatti la direttiva AuthName, come si può vedere, contiene il titolo che verrà visualizzato nella finestra del login, mentre AuthUserFile contiene il percorso assoluto al file contenente gli utenti. La direttiva AuthType indica la tipologia di autenticazione che apache deve eseguire, e deve rimanere Basic, mentre Require valid-user indica ad apache che alla cartella e alle sotto-cartelle e i file contenti in esse potranno accedere tutti gli utenti indicati nel file degli utenti. Infine la direttiva Files obbliga ad Apache a richiedere l'utente di nome pippo per eseguire la visualizzazione dei file con estensione Jpg.

Per creare i file .htpasswd è possibile utilizzare l'utility di apache che ha il medesimo nome e che si trova all'interno della cartella bin, presente nella cartella d'installazione di apache.
Su linux, se apache è stato installato tramite un pacchetto precompilato probabilmente è presente nelle path e quindi è possibile eseguirlo direttamente.

Messaggi D'errore Personalizzati

Apache permette di utilizzare dei messaggi d'errore personalizzati con estrema facilita: utilizzando la direttiva ErrorDocument è possibile specificare il testo del messaggio per ogni singolo errore.
Codice: [Seleziona]
ErrorDocument 403 "Accesso negato!"
La direttiva usata in questo modo forzerebbe apache a rispondere con il messaggio
"Accesso Negato!"
nel caso si verifichi l'errore 403, ovvero Forbidden.

È anche possibile forzare apache ad usare un file contenente una pagina html
Codice: [Seleziona]
ErrorDocument 400 /notfound.html
Possono essere usati anche i file CGI per rendere dinamica la risposta al client, magari in base all'url cercato o alla query string inserita. Per maggiori informazioni sulla gestione degli errori è possibile visitare l'indirizzo: http://httpd.apache.org/docs/custom-error.html

Configurare PHP

Tramite htaccess è anche possibile configurare PHP per le proprie esigenze in modo da far funzionare applicativi che hanno particolari necessità.

Il modulo di PHP mette a disposizione 2 direttive che servono ad impostare i settaggi presenti nel php.ini:

* php_flag
* php_value

La prima direttiva permette di impostare i valori booleani, ovvero TRUE e FALSE, mentre la seconda serve a settare tutti gli altri valori numerici o testuali.

Non è possibile impostare tutti i settaggi di php tramite queste due direttive, all'interno della pagina http://it2.php.net/ini_set.

I settaggi modificabili tramite queste direttive sono quelli segnati come PHP_INI_PERDIR.

Se si volesse impostare la dimensione massima per l'upload dei file si potrebbe usare la direttiva php_value in questo modo:
Codice: [Seleziona]
php_value "upload_max_filesize" "8M"
È anche possibile, ad esempio, aumentare il tempo massimo di esecuzione
Codice: [Seleziona]
php_value "max_execution_time" "60"
In questo modo il tempo massimo d'esecuzione degli script php verrebbe portato a 60 secondi, invece dei 30 presenti di default.

Se si volesse disabilitare il register_global si potrebbe usare ad esempio
Codice: [Seleziona]
php_flag "register_global" "0"
Possibili Problemi

Nel caso che i file htaccess non vi funzionino potrebbe essere necessario cercarne la causa all'interno del file di configurazione di apache: esiste una direttiva, AllowOverride, che indica cosa possono e non possono contenere i file htaccess.
Di default questa direttiva è impostata su None e quindi in locale, per ottenere un corretto funzionamento, è necessario impostarla su All.

P.S.: La GUIDA in questione non è fatina del mio sacco, ma è stata presa dal sito http://omsoft.altervista.org/forum/viewtopic.php?p=3110
per cui non dovete dire grazie a me^^
io l'ho solo portata qui per voi, per chi non la conoscesse e acui può servire
« Ultima modifica: 17 Set 2009, 15:12:32 da Niargo »

Offline joshua123

  • Appassionato
  • ***
  • Post: 313
  • Sesso: Maschio
    • Mostra profilo
    • Raccolta siti con Joomla!
Re:[GUIDA]I file .htaccess in Apache
« Risposta #1 il: 02 Mag 2012, 14:03:30 »
Io ho un file htaccess.txt, è quello?


(Non uso Apache)
...
Non sempre non parlare è sbagliato ...
...

Offline salvatore.ma

  • Nuovo arrivato
  • *
  • Post: 3
    • Mostra profilo
Re:[GUIDA]I file .htaccess in Apache
« Risposta #2 il: 12 Ott 2012, 11:22:37 »
No,
i file .htaccess iniziano con un punto (.)
Se parti da un file di testo preconfigurato (come può essere htaccess.txt con le dovute raccomandazioni....!!!) che hai già notato in radice, per rendere quest'ultimo un file .htaccess puoi usare agevolmente la finestra di windows "esegui" ->cmd -> e lavora in finestra dos.
Sotto dos, nella directory interessata, usa il comando: ren htaccess.txt .htaccess.bin
Il file creato in questo modo è automaticamente reso invisibile; ricordatevi di usare filezilla per gestire i file nel vostro spazio ftp con tali attributi (nascosti) altrimenti non li vedete con i normali programmi di gestione upload/download.
Se qualcosa nella creazione del file .htaccess dovesse andare storto, fate riferimento al programma per la creazione di tali file presente su apache che certamente è l'utility più corretta.


Online giusebos

  • Fuori controllo
  • *
  • Post: 18031
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
Re:[GUIDA]I file .htaccess in Apache
« Risposta #3 il: 12 Ott 2012, 18:37:16 »
per la rinomina del file, è possibile eseguirla all'interno di filezilla anche in ambiente windows.
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

 

Torna su