htaccess konfigurasjonsfil. Mod omskrivingsmodul

Htaccess (med en prikk i begynnelsen av navnet) er en fil som gjør det mulig å konfigurere driften av serveren i separate kataloger (mapper), uten å gi tilgang til hovedkonfigurasjonsfilen. For eksempel angi tilgangsrettigheter til filer i en katalog, endre navn på indeksfiler, håndtere Apache-feil uavhengig, omdirigere besøkende til spesielle sider feil.

Som du vet, konfigurasjonsdirektiver Apache server er i httpd.conf-filen. Men du vil ikke alltid ha tilgangsrettigheter til denne filen. For eksempel hvis du bruker til hosting virtuell server, når en Apache-server betjener mange nettsteder, er det naturligvis ingen som vil tillate deg å endre konfigurasjonen. Men likevel kan du konfigurere serveren i dine egne kataloger. Og du kan gjøre dette ved å bruke .htaccess-filer.

.htaccess-filen kan plasseres i hvilken som helst katalog. Direktivene til denne filen påvirker alle filer i gjeldende katalog og i alle underkatalogene (med mindre disse direktivene overstyres av direktivene til de underliggende .htaccess-filene).

Endringer i .htaccess-filer trer i kraft umiddelbart og krever ikke omstart av serveren, i motsetning til endringer som er gjort i hovedkonfigurasjonsfilen for httpd.conf.

httpd.conf-innstillinger som tillater bruk av .htaccess-filer

For at disse .htaccess-filene skal kunne brukes, kreves passende innstillinger i hovedkonfigurasjonsfilen. httpd.conf-filen må inneholde direktiver som lar .htaccess-filen overstyre webserverkonfigurasjonen i katalogen. Dette direktivet kalles AllowOverride. Den kan installeres både for hele serveren (globalt) og for en egen katalog.

AllowOverride-direktivet kan inkludere ett eller en kombinasjon av følgende direktiver: All, None, AuthConfig, FileInfo, Indexes, Limit, Options.

For å gi direktivene til .htaccess-filer maksimale rettigheter, bør du angi følgende i httpd.conf:

Tillat Overstyr alle

Merk

Om ønskelig kan navnet på konfigurasjonsfilen endres, og kall den for eksempel ikke .htaccess, men access.conf. Navnet på denne filen bestemmes av AccessFileName-direktivet i httpd.conf-filen. Men det anbefales likevel å ikke gjøre dette.

Syntax.htaccess

Før vi ser på eksemplene, la oss se på syntaksen til direktiver i .htaccess-filer.

  • Baner til filer og kataloger må spesifiseres fra serverroten, for eksempel /pub/home/server1/html/

Hvis du ikke kjenner stien fra serverroten, så kan du finne den ut ved å spørre serveradministratoren, eller du kan slå den opp selv ved å kjøre på nettsiden PHP funksjon- phpinfo(). Det vil vises PHP-konfigurasjon i form av lilla bord. I dem må du finne doc_root-variabelen og se på verdien - dette vil være banen fra serverroten til hovedkatalogen din.

  • Domenenavn må inneholde protokoller, for eksempel:

Eksempler på bruk av .htaccess

Global omdirigering (viderekobling) til en annen adresse:

Omdirigere / http://www.newsite.ru

Omdirigering (viderekobling) bare når du ber om visse sider:

Redirect /company http://www.newsite.com/newcompany
omdirigere /forum http://www.newsite.com/newforum

Når du ber om sider fra firma- og forumkatalogene, vil du bli omdirigert til nye adresser.

Omdiriger (viderekobling) kun besøkende med en spesifikk IP-adresse:

SetEnvIf REMOTE_ADDR 192.145.121.1 REDIR="redir"
RewriteCond %(REDIR) redir
RewriteRule ^/$ /only_for_you.html

Hvis den besøkende har IP-adressen 192.145.121.1, vil siden only_for_you.html bli åpnet for ham.

Endre navnet på indekssiden:

DirectoryIndex index.html index.php index.shtml

Du kan spesifisere flere indekssider. Når du ber om en katalog, vil de bli søkt i den rekkefølgen de er oppført i DirectoryIndex-direktivet. Hvis filen index.html ikke blir funnet, vil filen index.php bli søkt, osv.

Kjør PHP-kode i HTML-filer

RemoveHandler.html.htm
AddType application/x-httpd-php .php .htm .html .phtml

Ved å legge til disse linjene i .htaccess vil du lede serveren til å utføre PHP-instruksjoner, ikke bare i filer med *.php og *.phtml-utvidelser, men også i filer med *.htm- og *.html-utvidelser.

Apache-feilhåndtering

ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

Når disse feilene oppstår, vil den besøkende bli omdirigert til spesiallagde sider.

  • 401-feil – autorisasjon kreves.
  • 403-feil - brukeren har ikke bestått autentisering, tilgang nektes (forbudt).
  • 404-feil - Dokumentet ble ikke funnet.
  • 500 feil - Intern feil servere ( Intern server Feil).

Forbud mot å vise kataloginnhold hvis det ikke er noen indeksfil

Alternativer – Indekser

Bestemme kodingen som serveren "sender" filer i

AddDefaultCharset windows-1251

Bestemme kodingen for nedlastede filer

CharsetSourceEnc windows-1251

Nekt tilgang til alle filer

Nekter fra alle

Tilgang til alle filer og kataloger i gjeldende katalog nektes.

Tillat tilgang kun fra en bestemt IP-adresse

Bestilling avslå, tillat
nekte fra alle
tillate fra 195.135.232.70

Ordren nekte, tillat-linjen bestemmer i hvilken rekkefølge direktivene skal utføres. Direktivet om tilgangsnekt utføres først, og deretter tillates tilgang bare for IP-adressen 195.135.232.70. Hvis du på den første linjen endrer rekkefølgen på direktivene til ordre tillate, nekte, vil ikke tilgang for denne IP-adressen åpnes, siden avvisningsdirektivet som ble utført sist vil overstyre handlingene til tillat-direktivet.

165

Htaccess - Bruk og syntaks

Din vurdering: mesterverk fantastisk veldig bra bra normal Har ikke lest det tålelig middelmådig dårlig veldig dårlig les ikke

I webprogrammeringsmiljøet brukes ofte .htaccess-filen når du er vert for nettsteder som kjører en Apache-server. Dette er veldig nyttig fil, som lar deg definere udefinerte eller overstyre alternativer definert i httpd.conf eller apache.conf for et spesifikt nettsted eller katalog på dette nettstedet.

Filen påvirker gjeldende katalog (hvor den ligger) og alle kataloger "under", dvs. alle underordnede kataloger, med mindre de har sin egen .htaccess-fil definert.

I denne artikkelen vil jeg skissere en rekke av de mest brukte funksjonene i denne filen. Selvfølgelig er ikke alt beskrevet her; du kan lære mye av Internett, men de mest vanlige spørsmålene dekkes.

Skriveregler

Fildirektiver angis én per linje.

Alle stier starter fra nettstedets rot (ikke fra roten filsystem server!)

For eksempel hvis nødvendig fil på serveren er langs banen /var/www/mysite.ru/mydir/file.html, så vil den riktige banen være /mydir/file.html

Hvis url-indikasjonen utføres, må indikasjonen gjøres ved å bruke protokollindikasjonen.

For eksempel, hvis det er en omdirigering til nettstedet www.mysite.ru, må du spesifisere http://www.mysite.ru

Kommentarer er alt etter #-symbolet

I uttrykk du kan bruke Miljøvariabler. Listen over de mest brukte er nedenfor.

Til slutt, når du gjør endringer i en fil, trer de i kraft umiddelbart. Det er ikke nødvendig å starte noe på nytt.

Miljøvariabler

Selv om det ikke er ofte, kan miljøvariabler fortsatt brukes i .htaccess-filen. Noen av dem er gitt nedenfor (takket være nettstedet htaccess.net.ru):

  • QUERY_STRING (spørringsparametere)
  • REMOTE_ADDR (besøkendes IP-adresse)
  • REMOTE_HOST (besøkendes vertsnavn)
  • REMOTE_USER (brukernavn hvis autentisert)
  • REMOTE_METHOD (nettlesermetode - GET eller POST)
  • PATH_INFO (filbane til nettsiden)
  • HTTP_USER_AGENT (innhold av user-agent header - nettlesertype)
  • HTTP_REFERER (innhold i referansehode)
  • HTTP_COOKIE (informasjonskapselhodeinnhold)
  • HTTP_HOST (nettstedets vertsnavn)
  • TIME_YEAR (år, måned osv.)
  • TIME_MONTH
  • TIME_DAY
  • TIME_HOUR
  • TIME_MIN
  • TIME_SEC
  • TIME_WDAY
  • REQUEST_URI (forespurt URL)
  • REQUEST_FILENAME (forespurt fil)
  • THE_REQUEST (fullstendig forespørsel)

Regelmessige uttrykk i .htaccess

Du kan bruke regulære uttrykk i denne filen. Syntaksen deres er gitt nedenfor. Takket være nettstedet htaccess.net.ru

I vanlig uttrykk Du kan bruke alle utskrivbare tegn og mellomrom, men noen tegn har spesiell betydning:

  • Parenteser () brukes til å skille grupper av tegn.
  • Tegnet ^ markerer begynnelsen på en linje.
  • $-tegnet markerer slutten av linjen.
  • Symbol. står for hvilken som helst karakter.
  • Symbol | betegner et alternativ. For eksempel betyr uttrykkene "A|B" og "(ABC|DEF)" henholdsvis "A eller B" og "ABC eller DEF".
  • Symbol? er plassert etter et tegn (eller en gruppe av tegn), som kan være til stede eller ikke. For eksempel vil uttrykket "jpe?g" matche både strengen "jpg" og strengen "jpeg". Et eksempel på et uttrykk med en gruppe tegn: "super-(puper-)?side".
  • *-tegnet plasseres etter et tegn (eller en gruppe med tegn) som kan være fraværende eller være til stede et ubegrenset antall ganger på rad. For eksempel samsvarer uttrykket "jpe*g" med strengene "jpg", "jpeg" og "jpeeeeeeeg".
  • +-tegnet fungerer på samme måte som *-tegnet, med den eneste forskjellen at tegnet foran må være til stede minst én gang. For eksempel samsvarer uttrykket "jpe+g" med strengene "jpeg" og "jpeeeeg", men ikke "jpg".
  • Hakeparenteser brukes for å liste opp gyldige tegn. For eksempel er uttrykket "" ekvivalent med uttrykket "a|b|c", men alternativet med hakeparenteser er vanligvis raskere. Du kan bruke områder innenfor parentes: uttrykket "" tilsvarer for eksempel uttrykket "". Hvis karakterene er inne firkantede parenteser begynner med tegnet ^, dette betyr et hvilket som helst tegn bortsett fra de som er oppført i parentes. For eksempel betyr uttrykket "[^0-9]+" en streng med alle tegn unntatt tall.
  • \-symbolet plasseres foran spesialtegn hvis de er nødvendige i sin opprinnelige form. For eksempel samsvarer uttrykket "jpe\+g" bare med én streng, "jpe+g".
  • Alt til høyre for # regnes som en kommentar.

Hvordan slå den på

På Linux (LAMP) tillater Apache-konfigurasjoner vanligvis allerede bruk av .htaccess-filen. På FreeBSD må du kanskje spesifikt tillate denne filen ved å bruke AllowOverride-direktivet i den globale eller stedsspesifikke konfigurasjonen.

Tillat Overstyr alle

Forbud mot å lese alle filer i en katalog

Tilgang fra en spesifikk IP-adresse

eller nekte, tillate
nekte fra alle
tillate fra 192.168.0.1
tillate fra 192.168.0.2


hvor i stedet for 192.168.0.1, er 192.168.0.2 IP-adresser angitt som brukere kan få tilgang til nettstedet fra. Ellers - feil 403.

Nekter tilgang fra visse IP-adresser

bestille tillate, nekte
tillate fra alle
nekte fra 192.168.0.1
nekte fra 192.168.0.2


Hvor det i stedet for de spesifiserte IP-ene er nødvendig å angi de som tilgang nektes fra.

Nekter tilgang til filer med maske


bestille tillate, nekte
nekte fra alle


I stedet for ext1, ext2, ext3... setter vi inn utvidelsene våre. Regler for avvisning/tilgang bestemmes på samme måte som for hele katalogen som helhet.

Hvordan spesielt tilfelle- du kan angi tilgang for én spesifikk fil (men med tanke på nedarvingen av .htaccess-rettigheter - denne tilgangen eller forbudet vil gjelde for alle underkataloger - dvs. alle filer i denne katalogen og alle kataloger nedenfor):


bestille tillate, nekte
nekte fra alle

Passord til en katalog

Brukes ofte når du lager nettsider som ikke alle har tilgang til (eller deler av). Når du prøver å åpne denne url-en, vil nettleseren be brukeren om pålogging og passord.

AuthName "Skriv inn tilgangspassord"
AuthType Basic
AuthUserFile /var/www/mysite.ru/.htpasswd
krever gyldig bruker


MERK FØLGENDE! Vær oppmerksom på at her er banen til .htpasswd-filen spesifisert fra roten til serverens filsystem, ikke siden!

For å bruke denne metoden må du ha en .htpasswd-fil. Hvordan du oppretter og bruker den er beskrevet på samme side i nettdelen. Her er et eksempel på hvordan du lager denne filen:

# htpasswd -c /var/www/mysite.ru/.htpasswd brukernavn passord


Hvis -c-bryteren ikke er spesifisert, vil ikke htpasswd-verktøyet opprette filen igjen, men vil legge til brukernavnet til de eksisterende.

Det bør tas i betraktning at når denne metoden autentiseringspålogging og passord sendes åpent tekstform, derfor anbefales det å bruke HTTPS/SSL-protokollen.

Som et spesielt tilfelle kan denne konstruksjonen brukes inne i en blokk å passord bare noen filer.

Kompleks passordbeskyttelse

Det er en nettstedsstruktur:

/mysite.ru/A
/mysite.ru/A/B1
/mysite.ru/A/B2

Det er nødvendig å sikre at autentisering kun utføres når alle brukere får tilgang til katalog A, men samtidig har noen brukere tilgang til katalog B1, og andre har tilgang til katalog B2.

Vi trenger .htaccess-filer i hver katalog.

Htaccess for katalog A:

AuthName "Skriv inn passord"
AuthType Basic


krever gyldig bruker


.htaccess for katalog B1:

AuthName "Skriv inn passord"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

krever bruker brukernavn1 brukernavn2 brukernavn3


.htaccess for katalog B2:

AuthName "Skriv inn passord"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

krever bruker brukernavn1 brukernavn4 brukernavn5


I stedet for brukernavnX erstatter vi navnene på brukere som har tilgang til de tilsvarende katalogene.

Omdirigering (viderekobling) til et annet nettsted

Omdirigere / http://www.anothersite.ru


Hvis omdirigeringen er permanent (dvs. for alltid - noe som er veldig nyttig for søkemotorer), vil syntaksen være slik:

Omdiriger permanent / http://www.anothersite.ru


Bruker du ordet temp i stedet for permanent, vil omdirigeringen tvert imot være midlertidig.

Et annet eksempel på en omdirigering - fra en spesifikk katalog inne på nettstedet:

Omdirigere /dir2 http://www.anothersite.ru/dir2

I stedet for Redirect-direktivet bruker vi RedirectMatch-direktivet. Forskjellen er at i stedet for å spesifisere adressen som det skal omdirigeres fra, spesifiseres et regulært uttrykk.

RedirectMatch (.*)\.gif$ http://mysite.ru/$1.png


Omdirigerer alle forespørsler til .gif - til filer med samme navn, men med filtypen .png, som ligger på mysite.ru/

Et annet eksempel:

RedirectMatch (.*\.jpg)$ http://mysite/$1

RewriteEngine på

RewriteCond %(HTTP_HOST) ^www\.old_site\.ru$

RewriteCond %(HTTP_HOST) ^old_site\.ru$
RewriteRule ^(.*)$ http://new_site.ru/$1

Forestilling forskjellige sider avhengig av brukerens IP-adresse

SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir"
RewriteCond %(REDIR) redir
RewriteRule ^/$/another_page.html


I stedet for 192.168.0.1 setter vi inn verdien vår.

Bytte av startsiden

DirectoryIndex another_file.php


I hovedsak erstatter vi DirectoryIndex-direktivet som er spesifisert i httpd.conf- eller apache.conf-filen.

Erstatter feilsider

ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html


Således, når for eksempel en 404-feil oppstår, vil ikke nettleseren vise siden sin, men vil prøve å laste en stilisert side fra nettstedet.

Gjør det umulig å vise en liste over filer i kataloger uten en indeksfil

Alternativer - Indekser


Dermed vil ikke brukeren kunne vise innholdet i en katalog der det ikke er noen indeksfil (og i en katalog der det er en indeksfil kan han ikke gjøre dette som standard).

Spesifiserer den viste kodingen

Du kan fortelle nettleseren hvilken koding filene sendes til den. Dette vil redusere sannsynligheten for feil i automatisk deteksjon kodinger, hvis filer overføres i en, og av en eller annen grunn begynner nettleseren å vise dem i en annen.

AddDefaultCharset windows-1251

Spesifiserer automatisk konvertering av koding av nedlastede filer

Når du laster opp filer til nettstedet, vil de automatisk bli konvertert til den angitte kodingen.

CharsetSourceEnc koi8-r

Legger til MIME-behandlere

AddType "text/html" .myext
AddType "application/x-rar-compressed" .rar


På denne måten kan vi legge til direktiver til nettstedet vårt som ikke er beskrevet i den globale Apache-konfigurasjonen.

Blokkering av visse brukeragenter (nettlesere, roboter og roboter)

Her er en del av .htaccess-filen der flere User-Agents (nettlesere; bots, faktisk) er blokkert.

SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot


Bestill tillat, avslå
Tillat fra alle
Avslå fra env=bad_bot


Listen over "dårlige" brukeragenter her er veldig liten og er kun gitt som et eksempel.

PHP-innstillinger

I tillegg til httpd.conf og apache.conf-variablene, kan det hende vi også må endre verdiene spesifisert i php.ini php-innstillinger. .htaccess-filen lar deg gjøre så fine ting. Direktivene php_value og php_flag brukes til dette.

Forskjellen mellom php_value og php_flag: det første direktivet tildeler en spesifikk verdi til innstillingen:
php_verdi
og den andre slår den boolske innstillingen på eller av:
php_flag

MERK FØLGENDE! Du kan ikke bruke php_admin_flag og php_admin_value i en .htaccess-fil!

For eksempel kode

php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0


vil slå av automatisk dataescape i PHP (slå av MagicQuotes), og koden

php_value memory_limit 64M

vil overstyre verdien maksimal mengde minne tildelt for nettstedet.

Disse verdiene overstyrer verdiene som er definert i php.ini-filen eller definerer dem hvis de ikke ble angitt av vertsserveradministratoren. Det er ingen vits i å liste opp hele listen over PHP-innstillinger her – den finnes i dokumentasjonen for php nødvendig Versjoner for deg.

Omskriv modul

Apache-serveren inkluderer Rewrite-modulen. Til tross for at det brukes i .htaccess-filen, vil vi ikke beskrive det nå, fordi Dette er et eget emne som er verdig en egen artikkel.

Relevant for: Apache 2.x

Dette er ikke alt som kan gjøres med .htaccess-filen. Det er mange spesifikke eksempler på Internett; de mest nødvendige eksemplene er samlet her.

Tillat tilgang fra en bestemt ip: beordre tillate nekte
nekte fra alle
tillate fra<ваш ip>I i dette tilfellet, <ваш ip> angir en bestemt adresse.
For eksempel: beordre tillat nekte
nekte fra alle
tillate fra 192.126.12.199

Nekt tilgang fra en bestemt ip: beordre tillate nekte
nekte fra alle
nekte fra<ваш ip>Bruk <ваш ip> lignende for eksempelet ovenfor.

Avhengig av rekkefølgen direktivene er spesifisert i, endres logikken til serverens operasjon. Hvis Nekt, Tillat, nektes tilgang fra alle IP-er unntatt de spesifiserte, hvis Tillat, Avviser, tillates tilgang fra alle IP-er unntatt de spesifiserte. Neste bør være beskrivelsesseksjoner for tilgang og forbud. Nøkkelord alle betyr fra alle IP

For eksempel ønsker vi å nekte (blokkere) tilgang fra IP 81.222.144.12 og 81.222.144.20 og la alle andre vi trenger å legge til .htaccess følgende kode:

Bestill tillat, avslå
Tillat fra alle
Avslå fra 81.222.144.12, 81.222.144.20

For den omvendte situasjonen når vi ønsker å nekte alle tilgang IP i tillegg til 81.222.144.12 og 81.222.144.20 må vi legge til .htaccess følgende kode:

Bestill avslå, tillat
Nekter fra alle
Tillat fra 81.222.144.12, 81.222.144.20

For å tillate bare spesifikke verter eller grupper av verter å få tilgang til serveren, kan verten spesifiseres i et av følgende formater:

  • for et domenenavn (eller deler av det): Tillat fra apache.org
    Tillat fra .net example.edu
  • for ip-adresse: Tillat fra 10.1.2.3
    Tillat fra 192.168.1.104 192.168.1.205
  • for en del av ip-adressen:
    Tillat fra 10.1
    Tillat fra 10 172.20 192.168.2
  • for nettverk/maskepar: Tillat fra 10.1.0.0/255.255.0.0
  • for nettverk/nnn CIDR-spesifikasjoner:
    Tillat fra 10.1.0.0/16

Forby en gruppe filer med maske:
bestille tillate, nekte
nekte fra alle
Bestemmer tilgang til en fil ved filtypen.
For eksempel nekte tilgang til filer med "inc"-utvidelser for nettbesøkende:

bestille tillate, nekte
nekte fra alle

I i dette eksemplet Apache-nettserveren selv kan få tilgang til filer med slike utvidelser.

Forby på spesifikk fil:
Du kan blokkere en bestemt fil ved navn og filtype.
bestille tillate, nekte
nekte fra alle
I dette eksemplet er tilgang til filen config.inc.php forbudt.

Katalogpassord: AuthName "Privat sone"
AuthType Basic
krever gyldig bruker
AuthName-verdien vil vises for den besøkende og kan brukes til å klargjøre autorisasjonsforespørselen. AuthUserFile-verdien indikerer plasseringen der filen med passord for tilgang til denne katalogen er lagret. Denne filen er opprettet spesiell nytte htpasswd.exe.

For eksempel, i en katalog som er beskyttet med et passord, oppretter vi følgende .htaccess: AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
krever gyldig bruker
I dette eksemplet, når en besøkende ber om en katalog, vil han lese uttrykket "Kun for registrerte brukere"; filen med tilgangspassord skal være i katalogen /pub/site.ru/ og kalles.htapasswd. Katalogen er spesifisert fra serverroten; hvis du spesifiserer katalogen feil, vil ikke Apache kunne lese .htpasswd-filen og ingen vil ha tilgang til denne katalogen.

Passord for kun 1 fil:tirsdag 9. februar 2010 15:44:59 GMT+0300
I likhet med passord for en hel katalog, kan du sette et passord på kun 1 fil.
Et eksempel på å angi et passord for private.zip-filen:
AuthName "Brukersone"
AuthType Basic
AuthUserFile /pub/home/din_pålogging/.htpasswd

Passord for en gruppe filer:
Likeledes bruker , kan du angi passord basert på filmasker.
Et eksempel på å sette et passord for tilgang til alle filer med utvidelsen "sql":

AuthName "Brukersone"
AuthType Basic
AuthUserFile /pub/home/din_pålogging/.htpasswd

I dag, for å organisere arbeidet til det store flertallet av nettstedene på nettverket, Apache webserver. Den henger litt i ytelse, men er veldig enkel å konfigurere og har stor mengde muligheter.

Apache-nettserveren kan konfigureres ikke bare i hovedkonfigurasjonsfilen, men også gjennom .htaccess-filer. Disse filene ligger i enkelte mapper og fortelle webserveren hvordan den skal oppføre seg i denne mappen og dens underkataloger.

Å sette opp htaccess-filen ligner veldig på å sette opp hovedkonfigurasjonsfilen for Apache. Men det er litt annerledes. Med denne filen kan du konfigurere omdirigeringer, interne URL-endringer, tilgangsrettigheter, passordautorisasjon og mye mer. I dagens artikkel vil vi se på hvordan du konfigurerer htaccess riktig for serveren din.

Vi har allerede startet emnet i en av de tidligere artiklene, men i dag skal vi oppdatere informasjonen litt og se på htaccess-oppsettet mer detaljert.

Alle direktiver fra htaccess-filen utføres nøyaktig på samme måte som om de var plassert i den globale konfigurasjonsfilen, bare inne i direktivet . Det lar deg ikke endre globale innstillinger, men du kan finjustere oppførselen til programmet i mapper som du har tilgangsrettigheter til.

Den generelle syntaksen for direktiver er veldig enkel, de er par med kommandoer og deres alternativer atskilt med et mellomrom, for eksempel:

Kommandoparameter1 parameter2 flagg

Det er ganske mange kommandoer i seg selv, og vi vil se på dem ved å bruke eksempler på handlingene de utfører. I tillegg til selve kommandoene, kan nestede strukturer brukes her, for eksempel for å aktivere moduler eller sjekke tilgjengeligheten til en bestemt modul. La oss nå gå nærmere hvordan det er gjort riktig innstilling htaccess. La oss starte med de enkleste trinnene.

Sette opp htaccess-tilgang

Ganske ofte brukes htaccess til å kontrollere tilgangen til en mappe. Tre kommandoer brukes til å kontrollere tilgang:

  • rekkefølge- rekkefølge;
  • benekte- forby;
  • tillate- tillate.

Først, ved å bruke rekkefølgen, må du angi i hvilken rekkefølge direktivene vil bli utført; bare denne kommandoen har betydning, og det spiller ingen rolle i hvilken rekkefølge de er plassert i filen.

Deretter, ved å bruke tillat eller nekte-direktivet, tillater eller nekter vi tilgang til mappen fra bestemte adresser. For eksempel, for å deaktivere alt du trenger å legge til i htaccess:

Bestilling avslå, tillat
Nekter fra alle

Men vi kan også tillate tilgang bare fra det lokale nettverket:

Bestilling avslå, tillat
Nekter fra alle
Tillat 192.168.0.

Hvis deny,allow er spesifisert, vil kontrollen bli utført i den rekkefølgen. Først, alle nekte-direktiver, deretter alle tillat-direktiver, og hvis ingen av betingelsene samsvarer, hoppes forespørselen over. Med tillat, avslå, vil en slik forespørsel bli avvist som standard. For eksempel kan forrige eksempel skrives slik:

Bestill tillat, avslå
Tillat 192.168.0.

URL-endring i htaccess

Den vanligste bruken av htaccess er for URL-modifisering under kjøring eller omdirigeringer. Mod_rewrite-modulen er ansvarlig for denne funksjonaliteten og er vanligvis aktivert i de fleste Apache-konfigurasjoner.

URL-endring i htacces gjøres ved hjelp av tre direktiver, disse er RewriteBase, som spesifiserer adresseprefikset, RewriteCond sjekker for samsvar, og RewriteRule- endrer URL-en i henhold til det regulære uttrykket hvis alle samsvarsreglene samsvarer.

Først må du aktivere Mod_Rewrite, i tilfelle modulen ikke er aktiv ennå:

RewriteEngine på

Vi angir at roten skal brukes som et prefiks for nettadressen:

Og vi vil automatisk erstatte URL-en fra index.html til index.php, merk at den opprinnelige URL-en er banen til den forespurte filen i forhold til plasseringen av htaccess-filen:

RewriteRule index.html/index.php

For mer effektiv erstatning kan du bruke regulære uttrykk; de består av spesialtegn og variabler og vanlige tegn og tall. La oss se på hovedsaken Spesielle symboler:

  • ^ - begynnelsen av linjen;
  • $ - slutten av linjen;
  • . - et hvilket som helst symbol;
  • * - et hvilket som helst antall symboler;
  • ? - ett spesifikt symbol;
  • - en sekvens av tegn, for eksempel fra 0 til 9;
  • | - symbol eller, enten en gruppe eller en annen er valgt;
  • () - brukes til å velge grupper av tegn.

I regulære uttrykk for htaccess kan du også bruke variabler med data hentet fra forespørselshoder, for eksempel:

  • %(HTTP_USER_AGENT)- User-Agent-feltet, som overføres av brukerens nettleser;
  • %(REMOTE_ADDR)- brukerens IP-adresse;
  • %(REQUEST_URI)- forespurt URI;
  • %(QUERY_STRING)- spørringsparametere etter ?-tegnet.

Dette er de mest brukte variablene, men det er mange flere, resten finner du i den offisielle dokumentasjonen. Vanlige uttrykk åpner mer opp rikelige muligheter, for eksempel kan du erstatte html med php på alle sider:

RewriteEngine On;
RewriteBase/;

RewriteCond-direktivet gir enda mer fleksibilitet; du kan velge hvilke adresser du vil bruke endringen på, for eksempel vil vi omdefinere data kun for versjonen med www:

RewriteBase/;
RewriteCond % (HTTP_HOST) ^www.site.ru$
RewriteRule ^(.*)\.html$ $1.php

På denne måten kan du utføre alle transformasjoner på nettadressene dine uten å omdirigere hvor som helst. Men neste gang skal vi se på hvordan du gjør omdirigeringer.

Sette opp omdirigeringer i htaccess

Oppsett av htaccess-omdirigeringer gjøres på lignende måte, ved å bruke den samme mod_rewrite-modulen, bare nå i stedet for å endre url-en spesifiserer vi et flagg med Nødvendig handling og omdirigeringskode.

Den enkleste omdirigeringen kan utføres uten mod_rewrite, ved å bruke følgende linje:

Omdirigere 301 /index.html http://www.site.ru/index.php

Men vanligvis trenger du omdirigeringer med en bredere effekt. Alt ser veldig likt ut, bare nå bruker vi et flagg for å ignorere store og små bokstaver, [L] for å stoppe behandlingen og [R] for å omdirigere. For eksempel omdirigere htaccess fra en ikke-www-versjon til et domene med www:

RewriteCond %(HTTP_HOST) ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1

Verdien R=301 betyr omdirigeringskoden som skal returneres til klienten, du kan bruke 301, 302 osv. Omdiriger htaccess med domene www for et domene uten prefiks vil se slik ut:

RewriteCond %(HTTP_HOST) ^www.site\.ru$
RewriteRule ^(.*)$ http://site.ru/$1

Du kan gjøre en omdirigering på samme måte:

RewriteRule ^old_address /new_address/$1

Omdiriger fra http-versjon til https:

RewriteCond %(SERVER_PORT) ^80$
RewriteCond %(HTTP) =på
RewriteRule ^(.*)$ https://site.ru/$1

Setter opp feilsider i htaccess

Hvis det oppstår feil under generering av siden, har webserveren problemer kort melding og feilkode. Men det vil være mye klarere for brukerne hva som skjer hvis du gjør det for hver feil egen side med bilder og full forklaring.

Å sette opp htaccess for dette elementet vil være veldig nyttig. Du kan bruke ErrorDocument-direktivet. Ved å bruke den kan du angi HTML-sider for feil 4xx og 5xx. For eksempel, for 404:

ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml

Bufring i htaccess

Nettleseren lar deg lagre bilder, skriptfiler, stiler og andre mediefiler i hurtigbufferen Viss tid. Hurtigbufferens levetid settes av webserveren ved hjelp av spesielle overskrifter. De kan konfigureres ved hjelp av expires-modulen.

Først aktiverer du modulen og setter standard bufringsperiode:

Utløper aktiv på
Utløper Standard "tilgang pluss 1 måned"

Nå kan vi konfigurere caching for hver mime-filtype:

ExpiresByType text/html "tilgang pluss 1 måned 15 dager 2 timer"
ExpiresByType image/gif "tilgang pluss 5 timer 3 minutter"
ExpiresByType bilde/x-ikon "tilgang pluss 2592000 sekunder"

I den første linjen angir vi det html sider skal anses som gyldig i én måned, 15 dager og to timer fra lasting. Følgende filtyper er tilgjengelige:

  • bilde/x-ikon;
  • bilde/jpeg;
  • bilde/png;
  • bilde/gif;
  • applikasjon/x-shockwave-flash;
  • tekst/css;
  • tekst/javascript;
  • applikasjon/javascript;
  • applikasjon/x-javascript;
  • tekst/html;
  • application/xhtml+xml;

For å være sikker på at denne konstruksjonen ikke vil forårsake feil, pakk den inn i en hvis:


Filkomprimering i htaccess

For komprimering i Apache kan du bruke deflate-modulen. Her er det nok å bare liste opp mime-typer av filer som må komprimeres. For eksempel:

AddOutputFilterByType DEFLATE tekst/html tekst/ren tekst/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript

Du kan også legge ved en if-setning for å sjekke om modulen støttes:


konklusjoner

I denne artikkelen så vi på hvordan du konfigurerer htaccess-filen for riktig drift din side. Alle handlinger er ikke så vanskelige å utføre. Det er nok å kopiere noen linjer og korrigere dem for å passe dine behov. Hvis du har spørsmål, spør i kommentarene!

For å avslutte tilbyr jeg en video med en oversikt over Apache-konfigurasjonsfilen:

Full støtte for .htaccess-direktiver er inkludert...

Domenefornyelser 199-00 RUR

Dette materialet er et av de viktigste, så jeg anbefaler å være spesielt oppmerksom på det.

I et regulært uttrykk kan du bruke alle utskrivbare tegn og mellomrom, men noen tegn har spesiell betydning:

  • Parenteser () brukes til å skille grupper av tegn.

    Tegnet ^ markerer begynnelsen på en linje.

    $-tegnet markerer slutten av linjen.

    Symbol. står for hvilken som helst karakter.

    Symbol | betegner et alternativ. For eksempel betyr uttrykkene "A|B" og "(ABC|DEF)" henholdsvis "A eller B" og "ABC eller DEF".

    Symbol? er plassert etter et tegn (eller en gruppe av tegn), som kan være til stede eller ikke. For eksempel vil uttrykket "jpe?g" matche både strengen "jpg" og strengen "jpeg". Et eksempel på et uttrykk med en gruppe tegn: "super-(puper-)?side".

    *-tegnet plasseres etter et tegn (eller en gruppe med tegn) som kan være fraværende eller være til stede et ubegrenset antall ganger på rad. For eksempel samsvarer uttrykket "jpe*g" med strengene "jpg", "jpeg" og "jpeeeeeeeg".

    +-tegnet fungerer på samme måte som *-tegnet, med den eneste forskjellen at tegnet foran må være til stede minst én gang. For eksempel samsvarer uttrykket "jpe+g" med strengene "jpeg" og "jpeeeeg", men ikke "jpg".

    Hakeparenteser brukes for å liste opp gyldige tegn. For eksempel er uttrykket "" ekvivalent med uttrykket "a|b|c", men alternativet med hakeparenteser er vanligvis raskere. Du kan bruke områder innenfor parentes: uttrykket "" tilsvarer for eksempel uttrykket "". Hvis tegnene innenfor de firkantede parentesene begynner med en ^, betyr det et hvilket som helst annet tegn enn de som er oppført i parentesene. For eksempel betyr uttrykket "[^0-9]+" en streng med alle tegn unntatt tall.

    \-symbolet plasseres foran spesialtegn hvis de er nødvendige i sin opprinnelige form. For eksempel samsvarer uttrykket "jpe\+g" bare med én streng, "jpe+g".

    {3,9} - tannregulering betyr et område av antall tegn, i dette tilfellet er 3 til 9 tegn tillatt, lengden på strengen med tegn må være lik eller mer enn 3 lik eller mindre enn 9 tegn. Hovedsakelig brukt. Eksempel, sjekke strengen HTTP-forespørsel sendt av nettleseren til serveren for å finne ut om innholdet samsvarer med et spesifikt mønster:
    ♳ RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/
    ♴ la oss anta at vi ba om en indeksside på serveren %(THE_REQUEST) = "GET /index.html HTTP/1.1"
    ♵ i dette tilfellet leser vi kildelinjen som inneholder krøllete klammeparenteser som dette: "beginning_of_received_dataGETspace/index.phpspaceHTTP/"
    ♶ dvs. Det kan være "GET", eller det kan være "POST", det kan være andre verdier... bare symboler, avhengig av hva og hvordan vi ber om index.php-filen på serveren.

    Alt etter "#"-symbolet anses som en kommentar.

Jeg gjentar nok en gang at for ytterligere vellykket forståelse av beskrivelsen, eksempler på .htaccess og dens konfigurasjon, denne informasjonen rett og slett nødvendig!!!

Nylig utgitte domener med PR og TIC:

Tjenesten http://reg.ru - den største hosting- og domeneregistratoren lar deg søke om registrering av et domenenavn som nylig ble utgitt av den forrige administratoren. Frigitte domener har ofte høye TIC- og PR-indikatorer og kan være interessante for anskaffelse.

Utgitte domener.RU med TIC:
Tilgjengelige premiumdomener:

Volum av informasjon: 5805 byte