Htaccess, le regole più utili e utilizzate

Questo post sarà aggiornato di volta in volta che troverò, o mi consiglierete, nuove regole utili da aggiungere, quindi ripassate ogni tanto

E’ importante premettere che inserirò le cose più utili per un sito in costruzione.

Cominciamo dal principio: aprire il rewrite del file, altrimenti non funzionano alcune regole (meglio metterlo subito per non dimenticarsene):

RewriteEngine On

La index del sito (modificata per puntare a lavori_in_corso.php, non alla index):

# Index del sito
DirectoryIndex lavori_in_corso.php

Aggiungere il www se assente dall’indirizzo URL (universale senza bisogno di modifica):

# Indirizzo senza www disabilitato
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Se entrando in una cartella vi troverete la lista dei file presenti in quella stessa cartella, e viceversa, dovete scrivere:

# browsing diretto disabilitato (cambiare il - in + per abilitarlo)
Options All -Indexes

Impedire l’accesso diretto, da browser, ad alcuni file importanti, tipo l’htaccess stesso:

# Blocca accesso ad htaccess, htpasswd, ini, phps, fla, psd, log, sh
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Modificare tutte le estensioni da php a html ( o l’estensione che volete), con le quali potrete accedere alle pagine php sia con l’estensione .php che con quella .html:

RewriteRule ^(.*)\.html$ $1.php [NC]

Fino a qui queste regole servono per la preparazione del sito per quanto riguarda sicurezza e organizzazione generale. Cambiate ovviamente i valori in base alle vostre esigenze, come le pagine bloccate dal browser, il www o il nome della DirectoryIndex.

Passiamo al rewrite delle pagine. Ricordo, perché anch’io ci sono cascato, che il file htaccess può solamente permettere di accedere alle pagine nel sito digitando un nome della pagina senza estensione e maggiormente decifrabile, NON FA IL REDIRECT DELLE PAGINE CHE GIA’ AVETE AL NUOVO NOME! Ce lo dovete mettere voi! Se avete, ad esempio, un sito con un menu che rimanda alla pagina index.php, tramite il file htaccess potete dire che la scritta ‘benvenuti’ è la pagina index.php e quindi digitando l’URL ‘miosito.com/benvenuti’ vedrete la index.php. Non pensate che scrivendo ‘index.php’ nell’indirizzo venga scritto magicamente ‘benvenuti’, mi raccomando. Dovete mettere come indirizzo nei link per la homepage la parola ‘benvenuti’ invece che ‘index.php’.

Chiarito questo andiamo avanti.

Vogliamo, invece di vedere scritto index.php nella URL, che venga visualizzato un saluto che, per buona educazione, potrebbe essere ‘ benvenuti’:

RewriteRule ^benvenuti$ index.html

Così facendo quando l’utente andrà al link ‘miosito.it/benvenuti’ vedrà la pagina index.php camuffata sotto il nuovo nome.

Se volete fare il giochetto delle variabili carine da vedere e non ?id=3&msg=ciao bisogna usare:

RewriteRule ^saluto-n(.*)-(.*)$ saluti.php?id=$1&msg=$2

Andando ora alla pagina ‘saluto-n3-ciao’ si avrà l’equivalente di ‘saluti.php?id=3&msg=ciao’.
Come recuperare le variabili? Con il solito modo: $_GET[‘id’] e $_GET[‘msg’]. Per cambiare l’id o il messaggio basterà modificare il 3 o la parola ‘ciao’ con quello che volete passare tramite URL (GET).
Spiego la struttura in parole povere: Con (.*) si indica qualsiasi carattere/numero.. qualsiasi cosa insomma. Con $1 e $2? Semplicemente il primo e il secondo di (.*) in ordine. Se volete invertire l’id con il msg basterà scrivere $2 e $1. Chiaro? Non è comprensibile subito alla prima lettura ma provate e modificate quello di cui avete bisogno.

Rewrite di cartelle? Semplice:

RewriteRule ^login/(.*)$ pannello/$1

Scrivendo nell’URL la cartella ‘login/’ e qualsiasi cosa dopo, si accederà alla cartella ‘pannello/’ e qualsiasi cosa dopo, come ci fosse una copia esatta della cartella ‘pannello’ chiamata ‘login’ anche se in realtà non c’è!

Se invece avete, ad esempio, il pannello di controllo in una sotto/sottocartella e volete un accesso rapido basterà fare un redirect:

RewriteRule login(.*) http://www.miosito.com/pannello/login/ [R=301]
RewriteRule login/(.*) http://www.miosito.com/pannello/login$1 [R=301]

Così andando nella cartella ‘login’ o ‘login/’ l’utente verrà reindirizzato alla cartella ‘pannello/login/’.

 

Tutto chiaro? Più o meno? Se vi può consolare anch’io preferire un bicchiere di tea freddo ma sono cose che servono. Tanto.

Vi rimando, per chi vuole saperne di più, a questo sito (inglese) che parla di un pò tutto, anche se non in modo estremamente approfondito.
Ecco il LINK. Ecco un altro LINK con la traduzione automatica di Google in Italiano (fa abbastanza ridere ma può essere utile a chi di inglese ne mastica solo le unghie).

Annunci

, , , , , , , , , , , , ,

  1. Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: