Guida per principianti a .htaccess per progettisti e sviluppatori
Tra i molti vari strumenti per personalizzare il tuo server web, il file di configurazione .htaccess è una risorsa straordinaria. Puoi reimpostare rapidamente i tipi di documenti, analizzare i motori, reindirizzare gli URL, e molte altre caratteristiche cruciali. I webmaster che non sono molto tecnici potrebbero non entrare nello specifico della gestione del proprio file .htaccess. Ma l'argomento in sé è affascinante e merita qualche indagine.
Per questo articolo voglio presentare alcuni dei concetti più mirati per webmaster e sviluppatori web. Chiunque sia lanciando il proprio sito Web su un server Apache vorrà sicuramente capire come gestire il loro file .htaccess. esso fornisce così tanta personalizzazione ed esso può funzionare su tutti i linguaggi web da PHP a Ruby.
In fondo a questo post ho aggiunto alcune webapp esterne a aiutare i nuovi arrivati a generare dinamicamente i loro file .htaccess.
Perché usare un file .htaccess?
Questa è una grande domanda e forse dovremmo iniziare rispondendo “cos'è un file .htaccess”? È un file di configurazione molto speciale utilizzato dal server Web Apache. Un file .htaccess può dirlo al server web come presentare varie forme di informazione e come gestire varie intestazioni delle richieste HTTP.
In realtà è un mezzo di decentramento per organizzare le impostazioni del server web. Un server fisico può contenere 50 siti Web diversi ciascuno con il proprio file .htaccess. Garantisce molto potere ai webmaster, cosa che altrimenti sarebbe impossibile. Ma perché dovresti usarne uno?
La più grande ragione è la sicurezza. Puoi bloccare determinate directory o renderle protette da password. Questo è ottimo per progetti privati o nuovi sistemi di gestione dei contenuti in cui si desidera un po 'di sicurezza in più. Ma ci sono anche attività comuni come il reindirizzamento dei messaggi di errore 404 a una determinata pagina web. Questo richiede solo una singola riga di codice e può avere un impatto drammatico su come i visitatori reagiscono alle pagine mancanti.
Sinceramente non posso dire molto per convincere gli altri che un file .htaccess merita di essere compreso. Una volta che lo vedi in azione, puoi riconoscere tutto il valore che deriva da questo piccolo file di configurazione. Inoltre spero che il resto di questo articolo possa presentare alcuni argomenti interessanti per portare i webmaster alla luce della gestione di una configurazione .htaccess.
Consenti / Nega accesso
È possibile riconoscere potenziali visitatori di spam e negare loro l'accesso al tuo sito web. Questo può essere un po 'estremo, tuttavia se si sa che una persona o un gruppo di persone ha preso di mira il tuo sito web ci sono alcune opzioni tra cui scegliere. Puoi scegliere un dominio di riferimento per negare o escludere i visitatori da un indirizzo IP.
autorizzare, negare negare da 255.0.0.0 negare da 123.45.6. permettere da tutti
Questi codici di esempio sono stati copiati da Htaccess Guide poiché sono il modello perfetto per iniziare. Si noti che il 2 ° indirizzo IP manca il 4 ° intero. Questo blocco di codice avrà come target il primo IP (255.0.0.0) e ogni IP nell'intervallo compreso tra 123.45.6.0-255, quindi consentire tutto il resto del traffico. I webmaster non possono usarlo frequentemente come altre tecniche, ma è utile capire.
Impedisci elenco directory
Ci saranno momenti in cui hai una directory aperta che è configurare per consentire la navigazione di default. Ciò significa che gli utenti possono visualizzare tutti i file elencati all'interno di una struttura di directory interna, come la cartella delle immagini. Alcuni webmaster non vogliono consentire l'elenco di directory e per fortuna il frammento di codice è abbastanza facile da ricordare.
Opzioni -Index
Ho visto questa risposta presentata innumerevoli volte in Stack Overflow e potrebbe essere una delle regole più semplici .htaccess da ricordare.
È possibile in realtà creare più file .htaccess all'interno di ciascuna di queste directory quindi forse uno di loro è protetto da password, ma gli altri no. E tu puoi ancora mantenere il Opzioni -Index in modo che i visitatori non possano navigare attraverso il tuo sito web / immagini / cartella.
Protezione della password
La protezione delle password delle tue directory è una procedura molto comune per proteggere le aree amministrative e altre cartelle cruciali per il tuo sito web. A volte vuoi solo offrire l'accesso a un piccolo gruppo di persone. Altre volte le password servono a impedire agli hacker di accedere al pannello di amministrazione del tuo sito web. Ma in entrambi i casi è una soluzione molto potente per un numero intero di problemi.
C'è una guida pratica sulla protezione della password che delinea i frammenti di codice importanti. Avrai bisogno di generare un file password che memorizza le credenziali username / password. In questo modo Apache può verificare ciò che l'utente immette per vedere se è necessario concedere l'accesso. E nota come dovrai generare un campione per il tuo nome utente e password.
Consiglierei di usare questo generatore di password ht in modo da poter risparmiare un po 'di tempo. La sintassi verrà sempre perfetta e non è necessario crittografare la password da soli. E l'altra grande opzione è proteggere con password un'intera lista di directory. Possiamo vedere questo esempio nella galleria dei frammenti di codice CSS-Tricks.
AuthType Basic AuthName "Questa area è protetta da password" AuthUserFile /full/path/to/.htpasswd Richiedi utente valido
Sicurezza per WordPress
Per mettere a frutto questa idea di protezione della password, mostriamo un esempio reale. Lo snippet di codice più complicato lo farà forza l'autenticazione dell'utente per chiunque acceda al file wp-login.php di WordPress. Troverete la fonte originale su Ask Apache che ha numerosi altri frammenti di protezione di WordPress.
Rifiuta ordine, consenti il rifiuto di tutti Soddisfare qualsiasi AuthName "Protetto da AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Richiedere utente valido
E se hai intenzione di seguire queste regole .htaccess, potrebbe anche aiutare a proteggere con password l'area di amministrazione. Tipicamente il wp-login.php il file sta per ottenere il maggior numero di accessi da persone che cercano di forzare la forza bruta nel sistema. Quindi, anche solo i codici di esempio sopra sarebbero più che sufficiente sicurezza aggiunta per il tuo sito Web WordPress.
Regole di riscrittura degli URL HTTP
La riscrittura degli URL è probabilmente uno degli usi più comuni per i file .htaccess. Le installazioni predefinite di WordPress possono effettivamente genera un file .htaccess direttamente dal pannello di amministrazione. Questo ti permette di creare URL carini che non hanno la struttura .php? P = 1.
Voglio dare un'occhiata a questo esempio di riscrittura come aggiornare i caratteri di sottolineatura ai trattini da quel momento contiene molti degli elementi più importanti.
Opzioni + FollowSymLinks RewriteEngine su RewriteBase / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscitore: Sì] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _ ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscitore: Sì] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ $ 1- $ 2- $ 3 [E = uscitore: Sì] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = uscitore: Sì] RewriteCond% ENV: uscor ^ Sì $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine e RewriteBase può sempre essere impostato su questi valori esatti. Ma hai bisogno che RewriteEngine sia attivato per far funzionare qualsiasi altra cosa. Ci sono molte guide online che spiegano come abilitare mod_rewrite e anche il tuo provider di hosting può aiutarti.
Notare che la sintassi segue uno schema di RewriteRules in cima. Queste regole sono usate per corrisponde a casi che vengono inviati come richiesta HTTP. A questi viene risposto un RewriteRule che in questo caso reindirizza tutto al dominio d.com. Le parentesi finali come [R = 301, L] sono chiamate flag di riscrittura che sono importanti, ma più di un argomento avanzato.
La sintassi mod_rewrite è decisamente un po 'confusa ma non intimidire! Gli snippet possono sembrare molto più semplici in altri esempi.
Quando ho appena iniziato, devo raccomandare questa webapp mod_rewrite che ti aiuta a generare esempi di codice usando URL reali. Questo è uno strumento geniale perché è possibile cercare vari elementi nella sintassi per vedere cosa effettivamente fanno nelle regole Riscrivi. Ecco un altro ottimo tutorial con un esempio più semplice da studiare:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Non cercare di sovraccaricarti di questi in una volta. Mi ci sono voluti ben più di 3-4 mesi per iniziare davvero a capire come riscrivere gli URL con [0-9a-zA-Z] + e modelli simili. Continua a esercitarti e con il tempo prometto che otterrai questa roba come se fosse conoscenza del buon senso.
Frammenti di codice per Webmaster
Adoro i frammenti facili da usare e voglio mettere insieme questa piccola raccolta di codici .htaccess pertinenti per i webmaster. Ognuna di queste idee può adattarsi bene al tuo file .htaccess insieme ad altri blocchi di codice. La maggior parte di questi frammenti è fantastica risolvere problemi o correzioni veloci nell'ambiente del server Web. Immagina la perfetta configurazione di Apache per i nuovi webmaster appena avviati online.
Impostazione DirectoryIndex
Il comando per DirectoryIndex viene utilizzato comunemente in una singola riga. Puoi dire ad Apache quali documenti dovrebbero essere inizialmente trattati come “principale” documento. Di default questo lo farà articoli di destinazione come index.html, index.php, index.asp e altri file di indice. Ma usando questo frammento di codice che ho copiato qui sotto, hai la possibilità di rendere questo documento di root tutto ciò che ti piace.
DirectoryIndex index.html index.cgi index.php
L'ordine dei documenti dovrebbe iniziare con il più importante e passare attraverso i ranghi al meno importante. Quindi, se non abbiamo un file HTML o CGI, il fallback andrà a index.php. E potresti anche nominare questi file home.php o someotherfile.php ed è tutta la sintassi valida.
Forza sottodominio WWW o Non WWW
Google può funzionare con entrambe le versioni del dominio del tuo sito web se non lo specifichi www.domain.com o semplicemente domain.com. Nella mia esperienza è la migliore pratica per scegli uno di questi e impostalo come unica scelta via .htaccess. Quindi Google non indicizzerà vari URL con alcuni che puntano al sottodominio WWW mentre altri no.
# Forza sottodominio WWW RewriteEngine su RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # No Sottodominio RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Questo snippet di codice proviene da un archivio CSS-Tricks e fornisce una soluzione molto utile. Dovresti aggiornare il dominio per essere quello che ti serve per il tuo sito web. Altrimenti ci saranno problemi e lo noterete subito! Ma io sostengo molto forzando una di queste due opzioni ed è in cima alla mia lista di attività dopo aver lanciato un nuovo sito web.
Forza download di file multimediali
Un altro frammento abbastanza importante consente di forzare determinati tipi di media scaricare anziché essere visualizzato nel browser. Immediatamente posso pensare a documenti PDF e file audio MP3 che possono essere presentati in un formato scaricabile, ma come si fa assicurati che siano scaricabili? Ho trovato un articolo simile pubblicato su Htaccess Guide che delinea questo snippet di codice.
AddType application / octet-stream .zip .mp3 .mp4
Sentiti libero di includere ancora più tipi di file alla fine di questa riga. Tutti i formati multimediali che utilizzano il tipo MIME di ottetto-stream saranno scaricabili. Forzare questo attraverso .htaccess è un percorso molto diretto per garantire che le persone non siano in grado di visualizzare questi file nel browser.
Documenti di errore personalizzati
Un ultimo pezzo finale che voglio aggiungere è un modello completo di documenti di errore personalizzati. Di solito questi codici numerici sono visti solo sul lato server. Ma ci sono molti di questi documenti di errore che dovresti avere familiarità con. Alcuni esempi potrebbero essere 403/404 errori e il Reindirizzamento 301.
Questo modello di codice di errore inizia a 100 e si sposta verso l'alto in 500 errori. Si prega di notare che ovviamente non è necessario tutti questi. Sarebbero necessari solo gli errori più comuni, e possibilmente alcuni frammenti oscuri se ne sentite la necessità.
Se non si riconosce un codice, basta cercarlo su Wikipedia per ottenere una migliore comprensione.
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_GONE ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
Webapp di .htaccess online
- Htaccess Builder
- .generatore di reindirizzamento htaccess
- .htaccessEditor - Crea un file .htaccess
- Mod Rewrite Generator di GenerateIt.net
Altre risorse utili
- .htaccess in Httpd Wiki
- Documentazione ufficiale di Apache htaccess
- Ask Apache Blog - Htaccess Archives
- Guida definitiva di htaccess e mod_rewrite
- Tutto quello che avresti sempre voluto sapere sulle regole Mod_Rewrite ma che avevi paura di chiedere
Pensieri finali
Ci sono così tante risorse online che discutono di file .htaccess. I miei articoli collegati e le mie webapp sono un ottimo punto di partenza. Ma continua a praticare nuove idee e non aver paura testare snippet di codice. Fintanto che hai un file di backup allora puoi testare tutto ciò che ti piace ed è una divertente esperienza di apprendimento.
Se hai altre idee o suggerimenti sulla gestione di .htaccess, per favore condividi con noi nell'area di discussione successiva qui sotto.