En nybörjarens guide till .htaccess för designers och utvecklare
Bland de många olika verktygen för att anpassa din webbserver är .htaccess config-filen en enorm tillgång. Du kan Återställ snabbt dokumenttyper, analysera motorer, URL-omdirigeringar, och många andra viktiga funktioner. Webbmästare som inte är mycket tekniska får inte komma in i detaljerna för att hantera din egen .htaccess-fil. Men själva ämnet är fascinerande och värt lite undersökning.
För den här artikeln vill jag presentera några av de mer ändamålsenliga koncepten för webbansvariga och webbutvecklare. Någon som är lansera sin egen webbplats på en Apache-server kommer definitivt vill förstå hur man hanterar deras .htaccess-fil. Det ger så mycket anpassningsbarhet och det kan fungera på alla webbspråk från PHP till Ruby.
I botten av det här inlägget har jag lagt till några externa webapps till hjälpa nykomlingar att generera sina .htaccess-filer dynamiskt.
Varför använda en .htaccess-fil?
Det här är en bra fråga och kanske bör vi börja med att svara “Vad är en .htaccess-fil”? Det är en mycket speciell konfigurationsfil som används av Apache webbservern. En .htaccess-fil kan berätta för webbservern hur man presenterar olika former av information och hur man hanterar olika HTTP-begäranhuvuden.
Det är verkligen ett sätt att decentralisering att organisera webbserverinställningar. En fysisk server kan innehålla 50 olika webbplatser med sin egen .htaccess-fil. Det ger mycket makt till webmasters, vilket annars skulle vara omöjligt. Men varför ska du använda en?
Den största orsaken är säkerhet. Du kan låsa ut vissa kataloger eller göra dem lösenordsskyddade. Det här är perfekt för privata projekt eller nya Content Management Systems där du vill ha lite extra säkerhet. Men det finns också vanliga uppgifter som omdirigering av 404 felmeddelanden till en viss webbsida. Detta tar bara en enda kodrad och det kan drabba dramatiskt hur besökare reagerar på saknade sidor.
Sanning är det inte mycket jag kan säga för att övertyga andra om att en .htaccess-fil är värt att förstå. När du förstår det i funktion kan du känna igen allt värde som kommer från den här lilla konfigurationsfilen. Jag hoppas också att resten av den här artikeln kan presentera några insiktsfulla ämnen för att få webbansvariga i ljuset att hantera en .htaccess-konfiguration.
Tillåt / neka åtkomst
Det är möjligt att känna igen potentiella spam besökare och neka dem tillgång till din webbplats. Det här kan vara lite extremt, men om du vet att en person eller en grupp människor har riktat in din webbplats finns det några alternativ att välja mellan. Du kan välja ett domänreferens för att neka eller förbjuda besökare med en IP-adress.
ordning tillåter, neka neka från 255.0.0.0 neka från 123.45.6. tillåta från alla
Dessa provkoder kopierades från Htaccess Guide eftersom de är den perfekta mallen för att komma igång. Observera att den andra IP-adressen saknar det 4: e heltalet. Detta kodblock riktar sig till den första IP-adressen (255.0.0.0) och varje IP inom intervallet 123.45.6.0-255, Tillåt sedan all annan trafik. Webmasters får inte använda detta så ofta som andra tekniker men det är till hjälp att förstå.
Förhindra katalogannonsering
Det kommer att finnas tillfällen när du har en öppen katalog som är konfigureras för att tillåta surfning som standard. Det betyder att användare kan se alla filer som är listade i en intern katalogstruktur, som din bildmapp. Vissa webbansvariga vill inte tillåta katalognotering och tack och lov är kodbiten ganska lätt att komma ihåg.
Alternativ -Indexes
Jag har sett detta svar presenterat otaliga gånger under Stack Overflow och det kan vara en av de enklaste .htaccess reglerna att komma ihåg.
Det är möjligt att faktiskt skapa flera .htaccess-filer i var och en av dessa kataloger så kanske en av dem är lösenordsskyddad men de andra är inte. Och du kan fortfarande behålla Alternativ -Indexes så att besökare inte kan bläddra igenom din webbplats / bilder / mapp.
Lösenordsskydd
Lösenordsskydda dina kataloger är ett mycket vanligt förfarande för säkra administrationsområden och andra mappar som är avgörande för din webbplats. Ibland vill du bara erbjuda tillgång till en liten grupp människor. Andra gånger är lösenord för att förhindra att hackare får tillgång till din webbplatsadministrationspanel. Men på något sätt är det en mycket kraftfull lösning på ett stort antal problem.
Det finns en praktisk guide om lösenordsskydd som beskriver de viktiga kodproverna. Du kommer behöva skapa en lösenordsfil som lagrar användarnamnet / lösenordet. Så här kan Apache kontrollera vad användaren anger för att se om de ska få tillgång. Och märk hur du måste skapa ett prov för ditt användarnamn och lösenord.
Jag rekommenderar att du använder denna htpassword generator så att du kan spara lite tid. Syntaxen kommer alltid att bli perfekt och du behöver inte kryptera lösenordet själv. Och det andra bra alternativet är att lösenordsskydda en hel kataloglista. Vi kan se det här exemplet i CSS-Tricks Code Snippets Gallery.
AuthType Basic AuthName "Detta område är lösenordsskyddat" AuthUserFile /full/path/to/.htpasswd Kräv giltig användare
Säkerhet för WordPress
För att ge denna ide för lösenordsskydd till god användning, låt oss visa ett verkligt exempel. Denna mer komplicerade kodbit kommer att tvinga användarautentisering för alla som har tillgång till WordPress wp-login.php-filen. Du hittar den ursprungliga källan på Ask Apache som har många andra WordPress-skyddssnuttar.
Order Förneka, Tillåt Neka från alla tillfredsställande AuthName "Skyddat av AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Kräv giltig användare
Och om du följer dessa .htaccess-regler kan det också bidra till att lösenordsskydda adminområdet. Typiskt wp-login.php filen kommer att få de flesta träffar från personer som försöker brute tvinga sig in i ditt system. Så även exemplet koderna ovan skulle vara mer än tillräckligt med säkerhet för din WordPress webbplats.
HTTP-URL-omskrivningsregler
Omskrivningsadresser är förmodligen en av de vanligaste användningarna för .htaccess-filer. WordPress standardinstallationer kan faktiskt generera en .htaccess-fil direkt från administrationspanelen. Detta gör att du kan skapa fina webbadresser som inte har strukturen .php? P = 1.
Jag vill titta på detta omskrivningsexempel på hur man uppdaterar underskrifter till bindestreck sedan det innehåller många av de viktigaste elementen.
Alternativ + FollowSymLinks OmskrivningEngine På RewriteBase / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Ja] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscor: Ja] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ $ 1- $ 2- $ 3 [E = uscor: Ja] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = oscor: Ja] RewriteCond% ENV: uscor ^ Ja $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine och RewriteBase kan alltid vara inställd på dessa exakta värden. Men du behöver RewriteEngine påslagen för något annat att fungera. Det finns många guider på nätet som förklarar hur man aktiverar mod_rewrite och din webbleverantör kan också hjälpa till.
Observera att syntaxen följer ett mönster av RewriteRules på toppen. Dessa regler är vana vid matcha fall som skickas som en HTTP-begäran. Dessa besvaras av en RewriteRule som i detta fall omdirigerar allt till domänen d.com. Slutkonsolerna som [R = 301, L] kallas omskrivningsflaggor som är viktiga, men mer av ett avancerat ämne.
Mod_rewrite-syntaxen är definitivt lite förvirrande men inte skrämmad! Snippets kan se mycket lättare ut i andra exempel.
När jag bara börjat, måste jag rekommendera denna mod_rewrite webapp som hjälper dig att generera kodprover med riktiga webbadresser. Detta är ett utmärkt verktyg eftersom du kan slå upp olika objekt i syntaxen för att se vad de faktiskt gör i omskrivningsreglerna. Här är en annan bra handledning med ett enklare exempel att studera:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Försök inte överbelasta dig själv på alla samtidigt. Det tog mig bra över 3-4 månader för att verkligen förstå hur man skriver om webbadresser med [0-9a-zA-Z] + och liknande mönster. Fortsätt att öva och i tid lovar du att du kommer att få dessa saker som det är gemensam förnuftskunskap.
Kod Snippets för webmasters
Jag älskar lättanvända utdrag och jag vill sätta ihop den här lilla samlingen av relevanta .htaccess-koder för webbansvariga. Var och en av dessa idéer kan passa bra in i din egen .htaccess-fil tillsammans med andra kodblock. De flesta av dessa utdrag är bra för lösa snabba problem eller korrigeringar i din webbserver miljö. Föreställ dig den perfekta Apache-inställningen för helt nya webbansvariga, som bara kom igång online.
Inställning DirectoryIndex
Kommandot för DirectoryIndex används vanligtvis i en enda rad. Du kan berätta för Apache vilka dokument som ursprungligen ska behandlas som “huvud” dokumentera. Som standard kommer det här målpunkter som index.html, index.php, index.asp och andra indexfiler. Men med det här kodbiten som jag har kopierat nedan har du möjlighet att göra det här rotdokumentet något du vill.
DirectoryIndex index.html index.cgi index.php
Orderordningen ska börja med det viktigaste och gå igenom ledarna till minst viktiga. Så om vi inte har en HTML- eller CGI-fil kommer fallbacken att gå till index.php. Och du kan även namnge dessa filer home.php eller someotherfile.php och det är alla giltiga syntaxer.
Tvinga WWW eller icke-WWW-underdomän
Google kan arbeta med båda versionerna av din webbplatsdomän om du inte anger www.domain.com eller bara domain.com. Enligt min erfarenhet är det bästa praxis att välj en av dessa och ställ den som det enda valet via .htaccess. Då indexerar Google inte olika webbadresser, med några som pekar på WWW-underdomänen medan andra inte gör det.
# Force WWW Subdomain RewriteEngine På RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # Inget underdomän RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domän.com/$1 [L, R = 301]
Detta kodfragment kommer från ett CSS-Tricks-arkiv och ger en mycket praktisk lösning. Du bör uppdatera domänen för att vara vad du behöver för din egen webbplats. Annars kommer det att finnas problem och du märker genast! Men jag stöder starkt ett av dessa två alternativ och det står högst upp i min arbetslista efter att ha lanserat en ny webbplats.
Tvinga mediefil nedladdningar
En annan ganska viktig delbit tillåter att vissa medietyper tvingas ladda ner istället för att visas i webbläsaren. Omedelbart kan jag tänka på PDF-dokument och MP3-ljudfiler som kan presenteras i ett nedladdningsbart format, men hur gör du se till att de är nedladdningsbara? Jag hittade en liknande artikel som publicerades på Htaccess Guide som skisserar denna kodbit.
AddType application / octet-stream .zip .mp3 .mp4
Känn dig fri att inkludera ännu fler filtyper i slutet av den här raden. Alla medieformat som använder oktettströmmen MIME-typen kommer att hämtas. Tvinga detta genom .htaccess är en väldigt direkt väg för att människor inte kan visa dessa filer i webbläsaren.
Anpassade feldokument
En sista sista bit som jag vill lägga till är en fullständig mall av anpassade feldokument. Vanligtvis visas dessa nummerkoder endast på serverns ände. Men det finns många av dessa felhandlingar som du borde känna till. Några exempel kan vara 403/404 fel och den 301 omdirigering.
Denna felkodsmall börjar vid 100 och går uppåt till 500 fel. Observera att du självklart inte behöver alla dessa. Bara de vanligaste felen skulle vara nödvändiga, och eventuellt några dunkla utdrag om du känner behovet.
Om du inte känner igen en kod, titta bara på Wikipedia för att få en bättre förståelse.
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
Online .htaccess Webapps
- Htaccess Builder
- .htaccess-omdirigeringsgenerator
- .htaccessEditor - Skapa en .htaccess-fil
- Mod Rewrite Generator av GenerateIt.net
Andra användbara resurser
- .htaccess i Httpd Wiki
- Officiell Apache htaccess-dokumentation
- Fråga Apache Blog - Htaccess Arkiv
- Ultimate Guide till htaccess och mod_rewrite
- Allt du någonsin velat veta om Mod_Rewrite Rules men var rädd att fråga
Slutgiltiga tankar
Det finns så många oräkneliga resurser på nätet som diskuterar .htaccess-filer. Mina länkade artiklar och webbapps är ett bra ställe att komma igång. Men fortsätt att öva nya idéer och var inte rädd för testa kodrader. Så länge som du har en backup-fil då kan du testa någonting du gillar och det är en rolig lärande upplevelse.
Om du har andra idéer eller förslag om .htaccess-hantering, vänligen dela med oss i det efterföljande diskussionsområdet nedan.