Connect.gt

Condividiamo idee e conoscenza dal 2003...
...dopo 17 anni una Nuova Storia è nata
Scopri di più

I file .htaccess sono "file di configurazione distribuita" e forniscono un metodo per effettuare modifiche di configurazioni per date directory. Ciò che può essere inserito nei file .htaccess è determinato dalla direttiva AllowOverride definita dall´host. Questa direttiva specifica, per catergorie, quali direttive saranno abilitate se inserite in un file .htaccess. Quindi, il fatto che le direttive che vuoi utilizzare in un file .htaccess funzionino dipende in gran parte da come il tuo host ha configurato il server. Molti host consentono alcune direttive .htaccess.

Le direttive utilizzate da SEF per la riscrittura degli URL sono generalmente consentite, tuttavia non tutti gli host permetteranno di impostare php_flags, per esempio, per modificare l´impostazione del register_globals.

In generale, non dovrebbero mai essere utizzati file .htaccess a meno di non aver accesso ai file di configurazione pricipali del server, ma a meno che non stiate utilizzando il vostro server personale non avrete accesso a questo file.

I file .htaccess causano problemi di performace. Quando un host ha impostato AllowOverride per consentire l´utilizzo di file .htaccess Apache cercherà questi files in ogni directory, li cercherà sia che li utilizziate o meno. Il file .htaccess, inoltre, è caricato ad ogni singola chiamata che viene fatta al tuo sito e in aggiunta a questo, Apache deve controllare ogni file .htaccess che esiste nelle directory di livello superiore rispetto a quella chiamata.

Essenzialmente funziona così eg: Inserisci un file .htaccess nella directory root del tuo sito, quindi uno in una sottodirectory che lo compone, quando questa sottodirectory verrà chiamata Apache dovrà guardare sia al file .htaccess contenuto in essa che a quello della presente nella directory superiore a livello della root. Le direttive sono applicate nell´ordine nel quale sono trovate da Apache. Di conseguenza un file .htaccess in una particolare directory potrebbe scavalcare direttive che si trovano in file .htaccess in directory livelli superiori e queste, a loro volta, potrebbero essere scavalcate da direttive presente ancora più in alto, o nel file di configurazione principale stesso del server. Apache deve guardare in ognuno del file .htaccess della directory chiamata e in tutte quelle di livello superiore per determinare quali direttive utilizzare per elaborare la richiesta di chiamata della pagina del sito.

Quindi, quando mi vedete scrivere in un post che ogni direttiva aggiunta ad un file .htaccess aggiunge carico al server, capite perchè lo dico? Se avete un file .htaccess lungo, con molte direttive, e lo inserite in nella vostra root del sito, probabilmente avrete un grosso calo prestazioni, non solo aumenteranno gli accessi al file system, ma Apache deve anche eseguire ciò che le direttive gli indicano di fare.

Mi state ancora seguendo? Allora parliamo dell´argomento più scottante del mese: utilizzare .htaccess per disattivare register_globals.

Se desiderate che register_globals sia ON o OFF nel vostro spazio web non è necessario cambiare host. Se un host ha impostato PHP con register_globals ON, questo può spesso essere facilmente scavalcato con una semplice modifica al file .htaccess nella root del vostro sito. In questo modo potete impostarlo su ON o OFF. NB: questo è possibile se il vostro host ha abilitato AllowOverrides per il vostro utente.

Codice: php_flag register_globals on php_flag register_globals off

Se questo non vi funzionasse, potete utilizzare:

Codice: php_value register_globals 0 php_value register_globals 1

php_value register_globals 1 (ON) or 0 (OFF) - Apache le riconosce come le medesime direttive utilizzate sopra. Facendo questo php.info dovrebbe ora mostrarvi register_globals in ON o in OFF a seconda della opzione scelta.

Ora viene la parte intricata. Queste direttive funzionano SOLO per i siti che eseguono PHP in Apache, come un modulo Apache, non come CGI. PHPSuExec viene eseguito come CGI e settare register_globals in .htaccess non funzionerebbe.

Chi esegue Apache 1.x può utilizzare le direttive sopra così come sono, ma lavorando con Apache 2.x si ha bisogno di specificare la struttura a directory. (Questo dipende, ancora una volta da volta da come sia settato il vostro host). Con "struttura a directory" intendo <Directory> e </Directory>. Questi tag sono utilizzati per racchiudere un gruppo di direttive da applicare solo alla directory specificata e alle sotto-directory di questa. Dovete assicurarvi di utilizzare la corretta sintassi per la vostra <Directory>. Questa è la sintassu per Apache 1.3 (cercate nel manuale della vostra versione di Apache) http://httpd.apache.org/docs/1.3/mod...html#directory

php_flag non funziona con Apache 2. Non è possibile scrivere le parole "on" o "off, ma deve essere utilizzato 0 (off) o 1 (on). Per Apache 2.x, quindi, dovete utilizzare questa direttiva per impostare register_globals ad OFF:

Codice: php_value register_globals 0 I get a 500 server error. Se ottenete degli errori server, cotrollate i log del sito. I log sono fatti per mostrarvi entrambe le cose, sia se la direttiva che avete usato non è ammessa dalle impostazioni del server dell´host, che se avete commesso un errore di sintassi nella direttiva.

Come faccio a sapere se funziona? Questa è una domanda che tutti dovrebbero porsi. Non date per scontato che il vostro file .htaccess funzioni nel modo che vi aspettate. Se avete impostato ad off register_globals utilizzando una direttiva in .htaccess, controllare il vostro php.info e assicuratevi che riporti che register_globals sia effettivamente off.

Se siete un utente con esperienza potete inserire delle porcherie nel vostro .htaccess e dare uno sguardo agli errori del server. Se non ne otteneste capireste che il vostro .htaccess è stato ignorato. Non fate questo se non siete completamente sicuri di poter ripristinare la situazione poichè .htaccess scavalcando le configurazioni del vostro server a potreste trovarvi completamente esclusi dal vostro account dovendo poi affrontare un host particolarmente arrabbiato.

Se il vostro host non ha impostato AllowOverride per il vostro server, il vostro .htaccess sarà completamente ignorato e non otterrete un messaggio di errore del server che ve lo comunica. Se pensate che il vostro .htaccess sia stato ignorato, dovete contattare il vostro host e chiedere se è impostato AllowOverride, se sì, cosa è permesso fare.

.htaccess è un´area complessa e ne ho toccato solo alcuni aspetti. Se avete delle domane o dei suggerimenti vi prego di indicarle nell´area FAQ.

Se voleste ridirigere tutto il traffico www, aggiungete questo al vostro file .htaccess

Code: Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^domain\.com RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L] Ricordatevi di cambiare "domain.com" con il vostro dominio! Se state utilizzando SEF, probabilmente non dovrete aggiungere

Code: Options +FollowSymLinks

RewriteEngine on


  • Questa pagina è stata modificata per l'ultima volta il 8 lug 2009 alle 01:18.
  • Questa pagina è stata letta 9 321 volte.