htaccess konfigurationsfil. Mod omskrivningsmodul

Htaccess (med en prik i begyndelsen af ​​navnet) er en fil, der gør det muligt at konfigurere driften af ​​serveren i separate mapper (mapper), uden at give adgang til hovedkonfigurationsfilen. Angiv f.eks. adgangsrettigheder til filer i en mappe, ændre navnene på indeksfiler, håndtere Apache-fejl uafhængigt, omdirigere besøgende til særlige sider fejl.

Som du ved, konfigurationsdirektiver Apache server er i filen httpd.conf. Men du vil ikke altid have adgangsrettigheder til denne fil. For eksempel, hvis du bruger til hosting virtuel server, når en Apache-server betjener mange websteder, så er der naturligvis ingen, der vil tillade dig at ændre dens konfiguration. Men ikke desto mindre kan du konfigurere serveren i dine egne mapper. Og du kan gøre dette ved at bruge .htaccess-filer.

.htaccess-filen kan placeres i enhver mappe. Direktiverne for denne fil påvirker alle filer i nuværende bibliotek og i alle dets undermapper (medmindre disse direktiver tilsidesættes af direktiverne for de underliggende .htaccess-filer).

Ændringer i .htaccess-filer træder i kraft med det samme og kræver ikke genstart af serveren, i modsætning til ændringer, der er foretaget i httpd.conf-hovedkonfigurationsfilen.

httpd.conf-indstillinger, der tillader brug af .htaccess-filer

For at disse .htaccess-filer kan bruges, kræves passende indstillinger i hovedkonfigurationsfilen. httpd.conf-filen skal indeholde direktiver, der tillader .htaccess-filen at tilsidesætte webserverens konfiguration i mappen. Dette direktiv kaldes AllowOverride. Det kan installeres både for hele serveren (globalt) og for en separat mappe.

AllowOverride-direktivet kan omfatte en eller en kombination af følgende direktiver: Alle, Ingen, AuthConfig, FileInfo, Indexes, Limit, Options.

For at give direktiverne for .htaccess-filer maksimale rettigheder, bør du indstille følgende i httpd.conf:

Tillad Tilsidesæt alle

Bemærk

Hvis det ønskes, kan navnet på konfigurationsfilen ændres, og for eksempel kalde det ikke .htaccess, men access.conf. Navnet på denne fil bestemmes af AccessFileName-direktivet i filen httpd.conf. Men det anbefales stadig ikke at gøre dette.

Syntax.htaccess

Før vi ser på eksemplerne, lad os se på syntaksen af ​​direktiver i .htaccess-filer.

  • Stier til filer og mapper skal angives fra serverroden, f.eks. /pub/home/server1/html/

Hvis du ikke kender stien fra serverroden, så kan du finde ud af den ved at spørge serveradministratoren, eller du kan selv slå den op ved at køre på hjemmesiden PHP funktion- phpinfo(). Det vises PHP konfiguration i form af lilla borde. I dem skal du finde doc_root-variablen og se på dens værdi - dette vil være stien fra serverroden til din hovedmappe.

  • Domænenavne skal indeholde protokoller, for eksempel:

Eksempler på brug af .htaccess

Global omdirigering (omdirigering) til en anden adresse:

Omdirigering / http://www.newsite.ru

Omdirigering (omdirigering) kun ved anmodning om bestemte sider:

Omdiriger /firma http://www.nytsted.dk/nytfirma
omdirigere /forum http://www.newsite.com/newforum

Når du anmoder om sider fra firma- og forummapper, vil du blive omdirigeret til nye adresser.

Omdiriger (omdirigere) kun besøgende med en specifik IP-adresse:

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

Hvis den besøgende har en IP-adresse på 192.145.121.1, vil siden only_for_you.html blive åbnet for ham.

Ændring af navnet på indekssiden:

DirectoryIndex index.html index.php index.shtml

Du kan angive flere indekssider. Når du anmoder om en telefonbog, vil de blive søgt i den rækkefølge, de er angivet i DirectoryIndex direktiv. Hvis filen index.html ikke findes, så vil filen index.php blive søgt osv.

Udfør PHP-kode i HTML-filer

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

Ved at tilføje disse linjer til .htaccess vil du dirigere serveren til at udføre PHP-instruktioner ikke kun i filer med *.php og *.phtml udvidelser, men også i filer med *.htm og *.html udvidelser.

Apache fejlhåndtering

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

Når disse fejl opstår, vil den besøgende blive omdirigeret til specielt oprettede sider.

  • 401 fejl - autorisation påkrævet.
  • 403 fejl - brugeren har ikke bestået godkendelse, adgang nægtes (forbudt).
  • 404 fejl - Dokument blev ikke fundet.
  • 500 fejl - Intern fejl servere ( Intern server Fejl).

Forbud mod at vise mappeindhold, hvis der ikke er nogen indeksfil

Indstillinger – Indekser

Bestemmelse af kodningen, som serveren "sender" filer i

AddDefaultCharset windows-1251

Bestemmelse af kodningen for downloadede filer

CharsetSourceEnc windows-1251

Nægt adgang til alle filer

Afvis fra alle

Adgang til alle filer og mapper i den aktuelle mappe nægtes.

Tillad kun adgang fra en bestemt IP-adresse

Bestil afvis, tillad
benægte fra alle
tillade fra 195.135.232.70

Ordren nægte, tillade linjen bestemmer, i hvilken rækkefølge direktiverne skal udføres. Adgang nægte-direktivet udføres først, og derefter er adgang kun tilladt for IP-adressen 195.135.232.70. Hvis du i den første linje ændrer rækkefølgen af ​​direktiverne til ordre tillad, nægter, så åbnes adgangen til denne IP-adresse ikke, da det sidst udførte afvisningsdirektiv vil tilsidesætte handlingerne i tillade-direktivet.

165

Htaccess - Brug og syntaks

Din vurdering: mesterværk vidunderligt meget godt godt normalt Har ikke læst det tåleligt middelmådigt dårligt meget dårligt læser ikke

I webprogrammeringsmiljøet bruges .htaccess-filen ofte, når du hoster websteder, der kører en Apache-server. Det er meget nyttig fil, som giver dig mulighed for at definere udefinerede eller tilsidesætte muligheder defineret i httpd.conf eller apache.conf for et specifikt websted eller bibliotek på dette websted.

Filen påvirker den aktuelle mappe (hvor den er placeret) og alle mapper “under”, dvs. alle underordnede mapper, medmindre de har deres egen .htaccess-fil defineret.

I denne artikel vil jeg skitsere en række af de mest brugte funktioner i denne fil. Selvfølgelig er ikke alt beskrevet her, du kan lære meget af internettet, men de oftest stødte spørgsmål er dækket.

Skriveregler

Fildirektiver er angivet én pr. linje.

Alle stier starter fra webstedets rod (ikke fra roden filsystem server!)

For eksempel hvis påkrævet fil på serveren er langs stien /var/www/mysite.ru/mydir/file.html, så vil den korrekte sti være /mydir/file.html

Hvis url-indikationen udføres, skal indikationen foretages ved hjælp af protokol-indikationen.

For eksempel, hvis der er en omdirigering til webstedet www.mysite.ru, skal du angive http://www.mysite.ru

Kommentarer er alt efter #-symbolet

I udtryk kan du bruge miljøvariabler. Listen over de mest brugte er nedenfor.

Endelig, når du foretager ændringer i en fil, træder de straks i kraft. Der er ingen grund til at genstarte noget.

miljøvariabler

Selvom det ikke er ofte, kan miljøvariabler stadig bruges i .htaccess-filen. Nogle af dem er givet nedenfor (takket være webstedet htaccess.net.ru):

  • QUERY_STRING (forespørgselsparametre)
  • REMOTE_ADDR (besøgendes IP-adresse)
  • REMOTE_HOST (besøgendes værtsnavn)
  • REMOTE_USER (brugernavn, hvis det er godkendt)
  • REMOTE_METHOD (browsermetode - GET eller POST)
  • PATH_INFO (websidefilsti)
  • HTTP_USER_AGENT (indhold af brugeragent-headeren - browsertype)
  • HTTP_REFERER (referer header indhold)
  • HTTP_COOKIE (indhold af cookie-header)
  • HTTP_HOST (webstedsværtsnavn)
  • TIME_YEAR (år, måned osv.)
  • TIME_MONTH
  • TIME_DAY
  • TIME_HOUR
  • TIME_MIN
  • TIME_SEC
  • TIME_WDAY
  • REQUEST_URI (anmodet URL)
  • REQUEST_FILENAME (anmodet fil)
  • THE_REQUEST (fuld anmodning)

Regulære udtryk i .htaccess

Du kan bruge regulære udtryk i denne fil. Deres syntaks er angivet nedenfor. Takket være webstedet htaccess.net.ru

I almindelig udtryk Du kan bruge alle udskrivbare tegn og mellemrum, men nogle tegn har en særlig betydning:

  • Parenteser () bruges til at adskille grupper af tegn.
  • Tegnet ^ markerer begyndelsen af ​​en linje.
  • Tegnet $ markerer slutningen af ​​linjen.
  • Symbol. står for enhver karakter.
  • Symbol | betegner et alternativ. For eksempel betyder udtrykkene "A|B" og "(ABC|DEF)" henholdsvis "A eller B" og "ABC eller DEF".
  • Symbol? er placeret efter et tegn (eller en gruppe af tegn), som kan være til stede eller ikke. For eksempel vil udtrykket "jpe?g" matche både strengen "jpg" og strengen "jpeg". Et eksempel på et udtryk med en gruppe af tegn: "super-(puper-)?site".
  • Tegnet * er placeret efter et tegn (eller en gruppe af tegn), der kan være fraværende eller præsentere et ubegrænset antal gange i træk. For eksempel matcher udtrykket "jpe*g" strengene "jpg", "jpeg" og "jpeeeeeeeg".
  • Tegnet + virker på samme måde som tegnet *, med den eneste forskel, at tegnet før det skal være til stede mindst én gang. For eksempel matcher udtrykket "jpe+g" strengene "jpeg" og "jpeeeeg", men ikke "jpg".
  • Firkantede parenteser bruges til at angive gyldige tegn. For eksempel svarer udtrykket "" til udtrykket "a|b|c", men indstillingen med firkantede parenteser er normalt hurtigere. Du kan bruge områder inden for parentes: udtrykket "" svarer for eksempel til udtrykket "". Hvis karaktererne er inde firkantede parenteser begynder med tegnet ^, dette betyder ethvert tegn undtagen dem, der er angivet i parentes. For eksempel betyder udtrykket "[^0-9]+" en streng af alle tegn undtagen tal.
  • \-symbolet placeres før specialtegn, hvis de er nødvendige i deres oprindelige form. For eksempel matcher udtrykket "jpe\+g" kun én streng, "jpe+g".
  • Alt til højre for # betragtes som en kommentar.

Sådan tænder du den

På Linux (LAMP) tillader Apache-konfigurationer typisk allerede brugen af ​​.htaccess-filen. På FreeBSD skal du muligvis specifikt tillade denne fil ved hjælp af AllowOverride-direktivet i den globale eller stedspecifikke konfiguration.

Tillad Tilsidesæt alle

Forbud mod at læse alle filer i en mappe

Adgang fra en bestemt IP-adresse

eller nægte, tillade
benægte fra alle
tillade fra 192.168.0.1
tillade fra 192.168.0.2


hvor der i stedet for 192.168.0.1 er angivet 192.168.0.2 IP-adresser, hvorfra brugere kan få adgang til webstedet. Ellers - fejl 403.

Nægter adgang fra visse IP-adresser

bestille tillade, nægte
tillade fra alle
nægte fra 192.168.0.1
nægte fra 192.168.0.2


Hvor det i stedet for de specificerede IP'er er nødvendigt at angive dem, hvorfra adgang nægtes.

Nægter adgang til filer med maske


bestille tillade, nægte
benægte fra alle


I stedet for ext1, ext2, ext3... indsætter vi vores extensions. Afvisnings-/adgangsregler bestemmes på samme måde som for hele biblioteket som helhed.

Hvordan særlig situation- du kan indstille adgang til en specifik fil (dog under hensyntagen til nedarvningen af ​​.htaccess-rettigheder - denne adgang eller forbud vil gælde for alle undermapper - dvs. for alle filer i denne mappe og alle mapper nedenfor):


bestille tillade, nægte
benægte fra alle

Adgangskode til en mappe

Bruges ofte ved oprettelse af hjemmesider, som ikke alle har adgang til (eller dele af). Når du forsøger at åbne denne url, vil webbrowseren bede brugeren om et login og en adgangskode.

AuthName "Indtast adgangskode"
AuthType Basic
AuthUserFile /var/www/mysite.ru/.htpasswd
kræver gyldig bruger


OPMÆRKSOMHED! Bemærk venligst, at stien til .htpasswd-filen her er angivet fra roden af ​​serverens filsystem, ikke fra webstedet!

For at bruge denne metode skal du have en .htpasswd-fil. Hvordan man opretter og bruger det, er beskrevet på samme side i webafsnittet. Her er et eksempel på oprettelse af denne fil:

# htpasswd -c /var/www/mysite.ru/.htpasswd brugernavn adgangskode


Hvis -c-switchen ikke er angivet, vil htpasswd-værktøjet ikke oprette filen igen, men tilføje brugernavnet til de eksisterende.

Det skal tages i betragtning, at hvornår denne metode autentificeringslogin og adgangskode sendes åbent tekstform, derfor anbefales det at bruge HTTPS/SSL-protokollen.

Som et særligt tilfælde kan denne konstruktion bruges inde i en blok kun til nogle filer med adgangskode.

Kompleks adgangskodebeskyttelse

Der er en webstedsstruktur:

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

Det er nødvendigt at sikre, at autentificering kun udføres, når alle brugere får adgang til bibliotek A, men samtidig har nogle brugere adgang til bibliotek B1, og andre har adgang til bibliotek B2.

Vi skal bruge .htaccess-filer i hver mappe.

Htaccess for mappe A:

AuthName "Indtast adgangskode"
AuthType Basic


kræver gyldig bruger


.htaccess for mappe B1:

AuthName "Indtast adgangskode"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

kræve bruger brugernavn1 brugernavn2 brugernavn3


.htaccess for mappe B2:

AuthName "Indtast adgangskode"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

kræve bruger brugernavn1 brugernavn4 brugernavn5


I stedet for brugernavnX erstatter vi navnene på brugere, der har adgang til de tilsvarende mapper.

Omdirigering (omdirigering) til et andet websted

Omdirigering / http://www.anothersite.ru


Hvis omdirigeringen er permanent (dvs. for evigt - hvilket er meget nyttigt til søgemaskiner), så bliver syntaksen sådan:

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


Bruger du ordet vikar i stedet for permanent, vil omdirigeringen tværtimod være midlertidig.

Et andet eksempel på en omdirigering - fra en specifik mappe inde på webstedet:

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

I stedet for Redirect-direktivet bruger vi RedirectMatch-direktivet. Forskellen er, at i stedet for at angive adressen, hvorfra der skal omdirigeres, angives et regulært udtryk.

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


Omdirigerer alle anmodninger til .gif - til filer af samme navn, men med filtypenavnet .png, placeret på mysite.ru/

Et andet eksempel:

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

RewriteEngine On

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

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

At vise forskellige sider afhængigt af brugerens 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 indsætter vi vores værdi.

Udskiftning af startsiden

DirectoryIndex another_file.php


I det væsentlige erstatter vi her DirectoryIndex-direktivet angivet i filen httpd.conf eller apache.conf.

Udskiftning af fejlsider

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


Når der for eksempel opstår en 404-fejl, vil browseren således ikke vise sin side, men forsøge at indlæse en stiliseret side fra siden.

Gør det umuligt at vise en liste over filer i mapper uden en indeksfil

Indstillinger - Indekser


Således vil brugeren ikke være i stand til at vise indholdet af en mappe, hvor der ikke er en indeksfil (og i en mappe, hvor der er en indeksfil, kan han ikke gøre dette som standard).

Angivelse af den viste kodning

Du kan fortælle browseren, hvilken kodning filerne sendes til den i. Dette vil reducere sandsynligheden for fejl i automatisk detektering kodninger, hvis filer overføres i en, og browseren af ​​en eller anden grund begynder at vise dem i en anden.

AddDefaultCharset windows-1251

Angivelse af automatisk konvertering af kodning af downloadede filer

Når filer uploades til webstedet, vil de automatisk blive konverteret til den angivne kodning.

CharsetSourceEnc koi8-r

Tilføjelse af MIME Handlers

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


På denne måde kan vi tilføje direktiver til vores websted, som ikke er beskrevet i den globale Apache-konfiguration.

Blokering af visse brugeragenter (webbrowsere, bots og robotter)

Her er et stykke af .htaccess-filen, hvor flere User-Agents (webbrowsere; bots, faktisk) er blokeret.

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


Bestil Tillad, afvis
Tillad fra alle
Afvis fra env=bad_bot


Listen over "dårlige" brugeragenter her er meget lille og er kun givet som et eksempel.

PHP indstillinger

Ud over variablerne httpd.conf og apache.conf skal vi muligvis også ændre værdierne angivet i php.ini php indstillinger. .htaccess-filen giver dig mulighed for at gøre så gode ting. php_value og php_flag direktiverne bruges til dette.

Forskellen mellem php_value og php_flag: det første direktiv tildeler en specifik værdi til indstillingen:
php_værdi
og den anden slår den booleske indstilling til eller fra:
php_flag

OPMÆRKSOMHED! Du kan ikke bruge 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 deaktivere automatisk dataudslip i PHP (deaktiver MagicQuotes), og koden

php_value memory_limit 64M

vil tilsidesætte værdien maksimal mængde hukommelse tildelt til webstedet.

Disse værdier tilsidesætter værdierne defineret i php.ini-filen eller definerer dem, hvis de ikke blev indstillet af hosting-serveradministratoren. Det nytter ikke at liste hele listen over PHP-indstillinger her - den kan findes i dokumentationen til php nødvendig Versioner til dig.

Omskriv modul

Apache-serveren inkluderer Rewrite-modulet. På trods af at det bruges i .htaccess-filen, vil vi ikke beskrive det nu, fordi Dette er et separat emne, der fortjener en separat artikel.

Relevant for: Apache 2.x

Dette er ikke alt, der kan gøres med .htaccess-filen. Der er en masse specifikke eksempler på internettet; de mest nødvendige eksempler er samlet her.

Tillad adgang fra en bestemt ip: beordre tillade afvisning
benægte fra alle
tillade fra<ваш ip>I I dette tilfælde, <ваш ip> angiver en bestemt adresse.
For eksempel: bestil tillad afvisning
benægte fra alle
tillade fra 192.126.12.199

Afvis adgang fra en bestemt ip: beordre tillade afvisning
benægte fra alle
benægte fra<ваш ip>Brug <ваш ip> lignende for eksemplet ovenfor.

Afhængigt af den rækkefølge, som direktiverne er angivet i, ændres logikken i serverens drift. Hvis Afvis, Tillad, så nægtes adgang fra alle IP'er undtagen de specificerede, hvis Tillad, Afvis, er adgang tilladt fra alle IP'er undtagen de specificerede. Dernæst bør være beskrivelsessektioner for adgang og forbud. Søgeord alle betyder fra alle IP

For eksempel ønsker vi at nægte (blokere) adgang fra IP 81.222.144.12 og 81.222.144.20 og tillade alle andre, vi skal føje til .htaccess følgende kode:

Bestil Tillad, afvis
Tillad fra alle
Afvis fra 81.222.144.12, 81.222.144.20

For den omvendte situation, når vi ønsker at nægte alle adgang IP ud over 81.222.144.12 og 81.222.144.20 skal vi tilføje til .htaccess følgende kode:

Bestil afvis, tillad
Afvis fra alle
Tillad fra 81.222.144.12, 81.222.144.20

For kun at tillade specifikke værter eller grupper af værter at få adgang til serveren, kan værten angives i et af følgende formater:

  • for et domænenavn (eller en del af det): Tillad fra apache.org
    Tillad fra .net example.edu
  • for ip-adresse: Tillad fra 10.1.2.3
    Tillad fra 192.168.1.104 192.168.1.205
  • for en del af ip-adressen:
    Tillad fra 10.1
    Tillad fra 10 172.20 192.168.2
  • for netværk/maskepar: Tillad fra 10.1.0.0/255.255.0.0
  • for netværk/nnn CIDR-specifikationer:
    Tillad fra 10.1.0.0/16

Forbyd en gruppe filer efter maske:
bestille tillade, nægte
benægte fra alle
Bestemmer adgangen til en fil ved dens filtypenavn.
For eksempel at nægte adgang til filer med "inc"-udvidelser for webbesøgende:

bestille tillade, nægte
benægte fra alle

I i dette eksempel Apache-webserveren kan selv få adgang til filer med sådanne udvidelser.

Forbud mod specifik fil:
Du kan blokere en specifik fil ved dens navn og filtypenavn.
bestille tillade, nægte
benægte fra alle
I dette eksempel er adgang til filen config.inc.php forbudt.

Directory adgangskode: AuthName "Privat zone"
AuthType Basic
kræver gyldig bruger
AuthName-værdien vil blive vist for den besøgende og kan bruges til at tydeliggøre godkendelsesanmodningen. AuthUserFile-værdien angiver det sted, hvor filen med adgangskoder til adgang til denne mappe er gemt. Denne fil er oprettet særlig nytte htpasswd.exe.

For eksempel, i en mappe, der er beskyttet med en adgangskode, opretter vi følgende .htaccess: AuthName "Kun for registrerede brugere"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
kræver gyldig bruger
I dette eksempel, når en besøgende anmoder om en mappe, vil han læse sætningen "Kun for registrerede brugere"; filen med adgangsadgangskoder skal være i mappen /pub/site.ru/ og kaldes.htapasswd. Biblioteket er angivet fra serverroden; hvis du angiver mappen forkert, vil Apache ikke være i stand til at læse .htpasswd-filen, og ingen vil have adgang til denne mappe.

Adgangskode til kun 1 fil:tirs 09 feb 2010 15:44:59 GMT+0300
I lighed med adgangskode til en hel mappe, kan du kun sætte en adgangskode på 1 fil.
Et eksempel på indstilling af en adgangskode til filen private.zip:
AuthName "Brugerzone"
AuthType Basic
AuthUserFile /pub/home/dit_login/.htpasswd

Adgangskode til en gruppe filer:
Ligeledes ved hjælp af , kan du indstille adgangskoder baseret på filmasker.
Et eksempel på indstilling af en adgangskode for adgang til alle filer med "sql"-udvidelsen:

AuthName "Brugerzone"
AuthType Basic
AuthUserFile /pub/home/dit_login/.htpasswd

I dag, for at organisere arbejdet på langt de fleste websteder på netværket, Apache webserver. Den halter lidt i ydeevne, men er meget nem at konfigurere og har stor mængde muligheder.

Apache-webserveren kan konfigureres ikke kun i hovedkonfigurationsfilen, men også gennem .htaccess-filer. Disse filer er placeret i visse mapper og fortæl webserveren, hvordan den skal opføre sig i denne mappe og dens undermapper.

Opsætning af htaccess-filen ligner meget opsætning af Apache-hovedkonfigurationsfilen. Men det er lidt anderledes. Med denne fil kan du konfigurere omdirigeringer, interne URL-ændringer, adgangsrettigheder, adgangskodegodkendelse og meget mere. I dagens artikel vil vi se på, hvordan du korrekt konfigurerer htaccess til din server.

Vi har allerede startet emnet i en af ​​de tidligere artikler, men i dag vil vi opdatere informationen lidt og se på htaccess-opsætningen mere detaljeret.

Alle direktiver fra htaccess-filen udføres nøjagtigt på samme måde, som hvis de var placeret i den globale konfigurationsfil, kun inde i direktivet . Det tillader dig ikke at ændre globale indstillinger, men du kan meget fint justere programmets adfærd i mapper, som du har adgangsrettigheder til.

Den generelle syntaks af direktiver er meget enkel, de er par af kommandoer og deres muligheder adskilt af et mellemrum, for eksempel:

Kommando parameter1 parameter2 flag

Der er ret mange kommandoer i sig selv, og vi vil se på dem ved hjælp af eksempler på de handlinger, de udfører. Ud over selve kommandoerne kan indlejrede strukturer bruges her, for eksempel til at aktivere moduler eller kontrollere tilgængeligheden af ​​et bestemt modul. Lad os nu gå tættere på, hvordan det er gjort korrekte indstilling htaccess. Lad os starte med de enkleste trin.

Opsætning af htaccess-adgang

Ganske ofte bruges htaccess til at kontrollere adgangen til en mappe. Tre kommandoer bruges til at kontrollere adgangen:

  • bestille- bestille;
  • nægte- forbyde;
  • give lov til- give lov til.

Først skal du ved at bruge rækkefølgen angive, i hvilken rækkefølge direktiverne vil blive udført; kun denne kommando har betydning, og det er ligegyldigt i hvilken rækkefølge de er placeret i filen.

Så ved at bruge tillad eller afvis-direktivet tillader eller nægter vi adgang til mappen fra bestemte adresser. For eksempel, for at deaktivere alt, hvad du skal tilføje til htaccess:

Bestil afvis, tillad
Afvis fra alle

Men vi kan også kun tillade adgang fra det lokale netværk:

Bestil afvis, tillad
Afvis fra alle
Tillad 192.168.0.

Hvis deny,allow er angivet, vil kontrollen blive udført i den rækkefølge. Først, alle afvis-direktiver, derefter alle tillad-direktiver, og hvis ingen af ​​betingelserne matcher, springes anmodningen over. Med tillad, afvis, vil en sådan anmodning blive afvist som standard. For eksempel kunne det foregående eksempel skrives sådan:

Bestil tillad, afvis
Tillad 192.168.0.

URL-ændring i htaccess

Den mest almindelige brug af htaccess er til URL-ændring under kørsel eller omdirigeringer. Mod_rewrite-modulet er ansvarligt for denne funktionalitet og er normalt aktiveret i de fleste Apache-konfigurationer.

URL-ændring i htacces udføres ved hjælp af tre direktiver, disse er RewriteBase, som angiver adressepræfikset, RewriteCond kontrollerer for overholdelse, og RewriteRule- ændrer URL'en i overensstemmelse med det regulære udtryk, hvis alle matchende regler matcher.

Først skal du aktivere Mod_Rewrite, hvis modulet endnu ikke er aktivt:

RewriteEngine tændt

Vi angiver, at roden skal bruges som et præfiks for URL'en:

Og vi vil automatisk erstatte URL'en fra index.html til index.php, bemærk at den originale URL er stien til den anmodede fil i forhold til placeringen af ​​htaccess-filen:

RewriteRule index.html/index.php

For mere effektiv udskiftning kan du bruge regulære udtryk; de består af specialtegn og variable og almindelige tegn og tal. Lad os se på det vigtigste Særlige symboler:

  • ^ - begyndelsen af ​​linjen;
  • $ - slutningen af ​​linjen;
  • . - ethvert symbol;
  • * - et vilkårligt antal symboler;
  • ? - ét specifikt symbol;
  • - en sekvens af tegn, for eksempel fra 0 til 9;
  • | - symbol eller, enten den ene eller den anden gruppe er valgt;
  • () - bruges til at vælge grupper af tegn.

I regulære udtryk i htaccess kan du også bruge variabler med data hentet fra anmodningsheadere, for eksempel:

  • %(HTTP_USER_AGENT)- feltet User-Agent, som overføres af brugerens browser;
  • %(REMOTE_ADDR)- brugerens IP-adresse;
  • %(REQUEST_URI)- anmodet URI;
  • %(QUERY_STRING)- forespørgselsparametre efter tegnet ?.

Det er de mest brugte variable, men der er mange flere, resten kan du finde i den officielle dokumentation. Regulære udtryk åbner mere op rigelige muligheder, for eksempel kan du erstatte html med php på alle sider:

RewriteEngine On;
RewriteBase/;

RewriteCond-direktivet giver endnu mere fleksibilitet; du kan vælge, hvilke adresser du vil anvende ændringen på, for eksempel vil vi kun omdefinere data for versionen med www:

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

På denne måde kan du udføre enhver transformation på dine URL'er uden faktisk at omdirigere nogen steder. Men herefter vil vi se på, hvordan man laver omdirigeringer.

Opsætning af omdirigeringer i htaccess

Opsætning af htaccess-omdirigeringer sker på lignende måde ved at bruge det samme mod_rewrite-modul, men nu, i stedet for at ændre url'en, angiver vi et flag med nødvendig handling og omdirigeringskode.

Den enkleste omdirigering kan udføres uden mod_rewrite ved at bruge følgende linje:

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

Men normalt har du brug for omdirigeringer med en bredere effekt. Alt ligner meget, kun nu bruger vi et flag til at ignorere store og små bogstaver, [L] til at stoppe behandlingen og [R] til at omdirigere. For eksempel at omdirigere htaccess fra en ikke-www-version til et domæne med www:

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

Værdien R=301 betyder den omdirigeringskode, der vil blive returneret til klienten, du kan bruge 301, 302 osv. Omdiriger htaccess med domæne www for et domæne uden et præfiks vil se sådan ud:

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

Du kan lave en omdirigering på samme måde:

RewriteRule ^old_address /new_address/$1

Omdiriger fra http-version til https:

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

Opsætning af fejlsider i htaccess

Hvis der opstår fejl under sidegenerering, har webserveren problemer kort besked og fejlkode. Men det vil være meget tydeligere for brugerne, hvad der sker, hvis du gør for hver fejl separat side med billeder og fuld forklaring.

Opsætning af htaccess for dette element vil være meget nyttigt. Du kan bruge ErrorDocument-direktivet. Ved at bruge det kan du indstille HTML-sider til fejl 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

Caching i htaccess

Browseren giver dig mulighed for at gemme billeder, scriptfiler, stilarter og andre mediefiler i sin cache bestemt tidspunkt. Cachens levetid indstilles af webserveren ved hjælp af specielle overskrifter. De kan konfigureres ved hjælp af expires-modulet.

Først skal du aktivere modulet og indstille standard cachingperiode:

Udløber Aktiv til
Udløber Standard "adgang plus 1 måned"

Nu kan vi konfigurere caching for hver mime-filtype:

ExpiresByType text/html "adgang plus 1 måned 15 dage 2 timer"
ExpiresByType image/gif "adgang plus 5 timer 3 minutter"
ExpiresByType billede/x-ikon "adgang plus 2592000 sekunder"

I første linje angiver vi det html sider skal betragtes som gyldig i en måned, 15 dage og to timer fra pålæsningstidspunktet. Følgende filtyper er tilgængelige:

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

For at være sikker på, at denne konstruktion ikke vil forårsage fejl, skal du pakke den ind i en hvis:


Filkomprimering i htaccess

Til komprimering i Apache kan du bruge deflate-modulet. Her er det nok blot at liste de mime-typer af filer, der skal komprimeres. For eksempel:

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

Du kan også vedlægge en if-erklæring for at kontrollere, om modulet er understøttet:


konklusioner

I denne artikel så vi på, hvordan man konfigurerer htaccess-filen til korrekt drift dit websted. Alle handlinger er ikke så svære at udføre. Det er nok at kopiere et par linjer og rette dem, så de passer til dine behov. Hvis du har spørgsmål, så spørg i kommentarerne!

Som afslutning tilbyder jeg en video med en oversigt over Apache-konfigurationsfilen:

Fuld understøttelse af .htaccess-direktiver er inkluderet...

Domænefornyelser 199-00 RUR

Dette materiale er et af de vigtigste, så jeg anbefaler at være særlig opmærksom på det.

I et regulært udtryk kan du bruge alle udskrivbare tegn og mellemrum, men nogle tegn har en særlig betydning:

  • Parenteser () bruges til at adskille grupper af tegn.

    Tegnet ^ markerer begyndelsen af ​​en linje.

    Tegnet $ markerer slutningen af ​​linjen.

    Symbol. står for enhver karakter.

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

    Symbol? er placeret efter et tegn (eller en gruppe af tegn), som kan være til stede eller ikke. For eksempel vil udtrykket "jpe?g" matche både strengen "jpg" og strengen "jpeg". Et eksempel på et udtryk med en gruppe af tegn: "super-(puper-)?site".

    Tegnet * er placeret efter et tegn (eller en gruppe af tegn), der kan være fraværende eller præsentere et ubegrænset antal gange i træk. For eksempel matcher udtrykket "jpe*g" strengene "jpg", "jpeg" og "jpeeeeeeeg".

    Tegnet + virker på samme måde som tegnet *, med den eneste forskel, at tegnet før det skal være til stede mindst én gang. For eksempel matcher udtrykket "jpe+g" strengene "jpeg" og "jpeeeeg", men ikke "jpg".

    Firkantede parenteser bruges til at angive gyldige tegn. For eksempel svarer udtrykket "" til udtrykket "a|b|c", men indstillingen med firkantede parenteser er normalt hurtigere. Du kan bruge områder inden for parentes: udtrykket "" svarer for eksempel til udtrykket "". Hvis tegnene inden for de firkantede parenteser begynder med et ^, betyder det et hvilket som helst andet tegn end dem, der er angivet i parentes. For eksempel betyder udtrykket "[^0-9]+" en streng af alle tegn undtagen tal.

    \-symbolet placeres før specialtegn, hvis de er nødvendige i deres oprindelige form. For eksempel matcher udtrykket "jpe\+g" kun én streng, "jpe+g".

    {3,9} - seler betyder et interval af antallet af tegn, i dette tilfælde er 3 til 9 tegn tilladt, længden af ​​strengen af ​​tegn skal være lig med eller mere end 3 lig med eller mindre end 9 tegn. Hovedsageligt brugt. Eksempel, kontrol af strengen HTTP-anmodning sendt af browseren til serveren for at afgøre, om dens indhold matcher et specifikt mønster:
    ♳ RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/
    ♴ lad os antage, at vi anmodede om en indeksside på serveren %(THE_REQUEST) = "GET /index.html HTTP/1.1"
    ♵ i dette tilfælde læser vi kildelinjen, der indeholder krøllede klammeparenteser som denne: "beginning_of_received_dataGETspace/index.phpspaceHTTP/"
    ♶ dvs. Det kunne være "GET", eller det kunne være "POST", der kunne være andre værdier... bare symboler, alt efter hvad og hvordan vi anmoder om index.php-filen på serveren.

    Alt efter "#"-symbolet betragtes som en kommentar.

Jeg gentager endnu en gang, at for yderligere succesfuld forståelse af beskrivelsen, eksempler på .htaccess og dens konfiguration, denne information simpelthen nødvendigt!!!

Nyligt frigivne domæner med PR og TIC:

Tjenesten http://reg.ru - den største hosting- og domæneregistrator giver dig mulighed for at ansøge om registrering af et domænenavn, der for nylig blev udgivet af den tidligere administrator. Frigivne domæner har ofte høje TIC- og PR-indikatorer og kan være interessante til erhvervelse.

Frigivne domæner.RU med TIC:
Tilgængelige premium-domæner:

Informationsmængde: 5805 bytes