En nybegyndervejledning til .htaccess for designere og udviklere
Blandt de mange forskellige værktøjer til at tilpasse din webserver er .htaccess config-filen et enormt aktiv. Du kan hurtigt nulstil dokumenttyper, parsing motorer, omdirigeringer af webadresser, og mange andre vigtige funktioner. Webmastere, der ikke er meget tekniske, må ikke komme ind i detaljerne for at administrere din egen .htaccess-fil. Men selve emnet er fascinerende og værd at undersøge.
Til denne artikel vil jeg præsentere nogle af de mere målbevidste koncepter til webmastere og webudviklere. Enhver, der er lancerer deres egen hjemmeside på en Apache server vil helt sikkert gerne forstå hvordan man administrerer deres .htaccess-fil. Det giver så meget customizability og det kan arbejde på tværs af alle websprog fra PHP til Ruby.
I bunden af dette indlæg har jeg tilføjet nogle eksterne webapps til hjælpe nyankomne med at generere deres .htaccess-filer dynamisk.
Hvorfor bruge en .htaccess-fil?
Dette er et stort spørgsmål, og måske skal vi starte med at svare “Hvad er en .htaccess-fil”? Det er en meget speciel konfigurationsfil, der bruges af Apache webserveren. En .htaccess-fil kan fortælle webserveren hvordan man præsenterer forskellige former for information og hvordan man håndterer forskellige HTTP-anmodningsoverskrifter.
Virkelig er det et middel til decentralisering at organisere webserverindstillinger. En fysisk server kan indeholde 50 forskellige websteder hver med deres egen .htaccess-fil. Det giver en masse magt til webmastere, hvilket ellers ville være umuligt. Men hvorfor skal du bruge en?
Den største årsag er sikkerhed. Du kan låse ud bestemte mapper eller gøre dem beskyttet med adgangskode. Dette er fantastisk til private projekter eller nye Content Management Systems, hvor du vil have lidt ekstra sikkerhed. Men der er også fælles opgaver som omdirigering af 404 fejlmeddelelser til en bestemt webside. Dette kræver kun en enkelt kode kode og det kan dramatisk påvirke, hvordan besøgende reagerer på manglende sider.
Sandfærdigt er der ikke meget, jeg kan sige for at overbevise andre om, at en .htaccess-fil er værd at forstå. Når du ser det i aktion, så kan du genkende alle de værdier, der kommer fra denne lille konfigurationsfil. Jeg håber også, at resten af denne artikel kan indeholde nogle indsigtige emner, der bringer webmastere i lyset af at administrere en .htaccess-konfiguration.
Tillad / nægt adgang
Det er muligt at genkende potentielle spam besøgende og nægte dem adgang til din hjemmeside. Dette kan være en lille ekstreme, men hvis du ved, at en person eller gruppe af mennesker har målrettet mod dit websted, er der nogle muligheder at vælge imellem. Du kan vælge en domænehenvisning for at nægte eller forbyde besøgende af en IP-adresse.
rækkefølge tillade, nægte nægte fra 255.0.0.0 nægte fra 123.45.6. tillade fra alle
Disse prøvekoder blev kopieret fra Htaccess Guide, da de er den perfekte skabelon til at komme i gang. Bemærk, at den 2. IP-adresse mangler det 4. heltal. Denne kodeblok vil målrette mod den første IP (255.0.0.0) og hver IP inden for intervallet 123.45.6.0-255, Tillad derefter al anden trafik. Webmastere må ikke bruge dette så ofte som andre teknikker, men det er nyttigt at forstå.
Forhindre Directory Listing
Der vil være tidspunkter, hvor du har en åben mappe, som er konfigureret til at tillade browsing som standard. Det betyder, at brugerne kan se alle de filer, der er anført i en intern katalogstruktur, som din billedmappe. Nogle webmastere ønsker ikke at tillade katalogfortegnelse, og heldigvis er kodestykket ret nemt at huske.
Indstillinger -Indexes
Jeg har set dette svar præsenteret utallige gange under Stack Overflow, og det kan være en af de nemmeste .htaccess regler at huske.
Det er muligt at faktisk opret flere .htaccess-filer inde i hver af disse mapper så måske er en af dem beskyttet med adgangskode, men de andre er ikke. Og du kan stadig beholde Indstillinger -Indexes så besøgende ikke kan gennemse dit websted / billeder / mappe.
Adgangskodebeskyttelse
Adgangskodebeskyttelse af dine mapper er en meget almindelig procedure for sikring af administrationsområder og andre mapper afgørende for din hjemmeside. Nogle gange vil du kun give adgang til en lille gruppe mennesker. Andre gange skal adgangskoder forhindre hackere i at få adgang til dit website administration panel. Men på nogen måde er det en meget stærk løsning på en lang række problemer.
Der er en praktisk vejledning om adgangskodebeskyttelse, som beskriver de vigtige kodestykker. Du skal bruge generer en adgangskodefil, der gemmer brugernavn / adgangskodeoplysninger. Sådan kan Apache kontrollere, hvad brugeren indtaster for at se, om de skal gives adgang. Og bemærk, hvordan du skal generere en prøve for dit brugernavn og din adgangskode.
Jeg vil anbefale at bruge denne htpassword generator, så du kan spare lidt tid. Syntaxen vil altid komme ud perfekt, og du behøver ikke at kryptere adgangskoden selv. Og den anden rigtige mulighed er at passwordbeskytte en hel katalogfortegnelse. Vi kan se dette eksempel i CSS-Tricks Code Snippets Gallery.
AuthType Basic AuthName "Dette område er beskyttet med adgangskode" AuthUserFile /full/path/to/.htpasswd Kræv gyldig bruger
Sikkerhed til WordPress
For at give denne ide til beskyttelse af adgangskode til god brug, lad os vise et eksempel på virkelige verdener. Denne mere komplicerede kodestykke vil tvinge brugergodkendelse til nogen, der har adgang til WordPress wp-login.php filen. Du finder den oprindelige kilde på Ask Apache, som har mange andre WordPress-beskyttelsesstykker.
Ordre Afvis, Tillad nægtelse af alt tilfredsstillende Ethvert AuthName "Beskyttet af AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Kræv gyldig bruger
Og hvis du følger disse .htaccess-regler, kan det også medvirke til at kodeordbeskytte administrasjonsområdet. Typisk wp-login.php fil vil få de mest hits fra folk, der forsøger at brute, tvinge deres vej ind i dit system. Så selvom bare eksempler koderne ovenfor ville være mere end nok ekstra sikkerhed til din WordPress hjemmeside.
HTTP-URL omskrivningsregler
Omskrivning af webadresser er nok en af de mest almindelige anvendelser for .htaccess-filer. WordPress standardinstallationer kan faktisk generer en .htaccess-fil lige fra administrationspanelet. Dette giver dig mulighed for at oprette smukke webadresser, der ikke har strukturen .php? P = 1.
Jeg vil se på dette omskrivningseksempel på hvordan man opdaterer understregninger til bindestreger siden det indeholder mange af de vigtigste elementer.
Valgmuligheder + FølgSymLinks OmskrivningEngine På OmskrivningsBase / OmskrivningsRule! \. (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 = uscor: Ja] RewriteCond% ENV: uscor ^ Ja $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine og RewriteBase kan altid altid indstilles til disse nøjagtige værdier. Men du har brug for RewriteEngine tændt for noget andet at arbejde. Der er mange guider online, der forklarer, hvordan man aktiverer mod_rewrite, og din hostingudbyder kan også hjælpe.
Bemærk, at syntaksen følger et mønster af RewriteRules på toppen. Disse regler er vant til match til sager, der sendes som en HTTP-anmodning. Disse besvares af en RewriteRule, som i dette tilfælde omdirigerer alt til domænet d.com. Afslutningsbeslagene som [R = 301, L] kaldes omskrivningsflagge, som er vigtige, men mere af et avanceret emne.
Mod_rewrite syntaksen er helt sikkert lidt forvirrende, men vær ikke skræmt! Uddragene kan se meget lettere ud i andre eksempler.
Når jeg lige er kommet i gang, må jeg anbefale denne mod_rewrite webapp, der hjælper dig med at generere kodeprøver ved hjælp af ægte webadresser. Dette er et glimrende værktøj, fordi du kan slå op forskellige elementer i syntaxen for at se, hvad de egentlig gør i omskrivningsreglerne. Her er en anden stor tutorial med et enklere eksempel at studere:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Forsøg ikke at overbelaste dig selv på disse på én gang. Det tog mig godt i 3-4 måneder at virkelig forstå, hvordan man omskriver webadresser med [0-9a-zA-Z] + og lignende mønstre. Fortsæt med at praktisere og med tiden lover du at du får disse ting som det er almindelig fornuftskendskab.
Kodeuddrag til webmastere
Jeg elsker brugervenlige uddrag og jeg vil sammensætte denne lille samling af relevante .htaccess-koder til webmastere. Hver af disse ideer kan passe fint ind i din egen .htaccess-fil sammen med andre kodeblokke. De fleste af disse uddrag er gode til løse hurtige problemer eller rettelser i dit webserver miljø. Forestil dig den perfekte Apache-opsætning for helt nye webmastere, lige kommet i gang online.
Indstilling DirectoryIndex
Kommandoen til DirectoryIndex bruges almindeligvis i en enkelt linje. Du kan fortælle Apache hvilke dokumenter der oprindeligt skal behandles som “vigtigste” dokument. Som standard vil dette målelementer som index.html, index.php, index.asp og andre indeksfiler. Men ved at bruge denne kodebrik, som jeg har kopieret nedenfor, har du evnen til at gøre dette roddokument noget, du kan lide.
DirectoryIndex index.html index.cgi index.php
Ordren af dokumenter skal begynde med det vigtigste og flytte gennem rækken til de mindst vigtige. Så hvis vi ikke har en HTML- eller CGI-fil, så går tilbagefaldet til index.php. Og du kan endda nævne disse filer home.php eller someotherfile.php og det er al gyldig syntaks.
Force WWW eller Non-WWW Subdomain
Google kan arbejde med begge versioner af dit website domæne, hvis du ikke angiver www.domain.com eller bare domain.com. Efter min erfaring er det bedste praksis at vælg en af disse og sæt den som det eneste valg via .htaccess. Så indekserer Google ikke forskellige webadresser, mens nogle peger på WWW-underdomænet, mens andre ikke gør det.
# Force WWW Subdomain RewriteEngine På RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domæne.com/$1 [L, R = 301] # Ingen underdomæne RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domæne.com/$1 [L, R = 301]
Denne kodestykke kommer fra et CSS-Tricks arkiv og giver en meget praktisk løsning. Du skal opdatere domænet for at være det, du har brug for til din egen hjemmeside. Ellers vil der være problemer, og du vil bemærke med det samme! Men jeg støtter stærkt en af disse to muligheder, og det er øverst på min opgaver liste efter lancering af en ny hjemmeside.
Force Media File Downloads
En anden ret vigtig kodestykke tillader at tvinge bestemte medietyper til download i stedet for at blive vist i browseren. Umiddelbart kan jeg tænke på PDF-dokumenter og MP3-lydfiler, som kan præsenteres i et downloadbart format, men hvordan gør du det sørg for at de kan downloades? Jeg fandt en lignende artikel udgivet på Htaccess Guide, som beskriver dette kodestykke.
AddType applikation / octet-stream .zip .mp3 .mp4
Du er velkommen til at inkludere endnu flere filtyper i slutningen af denne linje. Alle medieformater, der bruger octet-stream MIME-typen, kan downloades. Tvinge dette igennem .htaccess er en meget direkte rute for at sikre, at folk ikke kan se disse filer i browseren.
Brugerdefinerede fejldokumenter
Et sidste sidste stykke, jeg vil tilføje, er en fuld skabelon af brugerdefinerede fejldokumenter. Normalt ses disse nummerkoder kun på serverens ende. Men der er mange af disse fejldokumenter, som du bør være bekendt med. Et par eksempler kan være 403/404 fejl og 301 omdirigering.
Denne fejlkode skabelon starter ved 100 og bevæger sig opad i 500 fejl. Bemærk venligst, at du selvfølgelig ikke har brug for alle disse. Kun de mest almindelige fejl ville være nødvendige, og muligvis et par uklare uddrag, hvis du føler behovet.
Hvis du ikke genkender en kode, skal du bare se den op på Wikipedia for at få en bedre forstå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 - Opret en .htaccess-fil
- Mod Rewrite Generator af GenerateIt.net
Andre nyttige ressourcer
- .htaccess i Httpd Wiki
- Officiel Apache htaccess-dokumentation
- Spørg Apache Blog - Htaccess Archives
- Ultimativ vejledning til htaccess og mod_rewrite
- Alt du nogensinde har ønsket at vide om Mod_Rewrite Rules, men var bange for at spørge
Afsluttende tanker
Der er så mange utallige ressourcer online, der diskuterer .htaccess-filer. Mine linkede artikler og webapps er et godt sted at komme i gang. Men hold øje med nye ideer og vær ikke bange for afprøvning af kodestykker. Så længe du har en backup-fil så kan du teste alt, hvad du kan lide, og det er en sjov læringserfaring.
Hvis du har andre ideer eller forslag til .htaccess-styring, kan du dele med os i nedenstående diskussionsområde.