Htaccess datoteka mijenja postavke poslužitelja koje utječu. Kako napraviti i ispravno konfigurirati htaccess datoteku? Zabrani pristup svim osim navedenim IP adresama

(11 )

.htaccess datoteku je specijalizirani servisni dokument koji služi za promjenu postavki Apache web poslužitelja i sličnih poslužitelja. Jednostavno rečeno, korištenje će vam pomoći promijeniti način na koji web mjesto radi: konfigurirati pristup mapama, datotekama i drugim materijalima, odrediti pravila prepisivanja poveznica i upozorenja o pogreškama. Istodobno, ne mijenjate funkcioniranje cijelog poslužitelja, konfigurirajući samo dodatne parametre za neke korisnike.

Kada vlasnik stranice radi na svom projektu, sigurno će doći trenutak kada će trebati koristiti .htaccess datoteku. Unatoč svom velikom značaju, za mnoge webmastere, posebice početnike, ostaje nepoznanica, jer da bi ga razumjeli potrebno je dobro poznavati ne samo SEO, već i programiranje.

U ovom članku ćemo vam pomoći razumjeti zašto vam je potreban .htaccess i kako ga postaviti. Ovo je vrlo važno jer otvara fleksibilne opcije za vlasnike web stranica koji žele osigurati pouzdanu sigurnost za svoj resurs.

U ovoj datoteci graditelji web stranica mogu:

  • Konfigurirajte jednostavne direktive za preusmjeravanje (preusmjeravanja). To će omogućiti, nakon promjene domene, slanje posjetitelja sa stranice prethodne stranice na novi projekt.
  • Preusmjeravanje s URL-a s www na domenu bez www. Ili na https nakon instaliranja ssl certifikata.
  • Opišite pogreške. Među njima je i pogreška 404 sa zamjenom za traženu stranicu.
  • Predmemoriranje datoteka. To se radi kako bi se ubrzao rad web resursa.
  • Stvorite CNC. To su "Čovjeku čitljivi URL-ovi", odnosno formiraju se poveznice koje su razumljive korisnicima interneta.
  • Promijenite izvorni kod stranica.
  • Kontrolirajte pristup datotekama i imenicima pomoću lozinki.
  • Odredite indeksnu datoteku.
  • Otvaranje i zatvaranje pristupa s određenih IP adresa.
  • Upravljajte botovima za pretraživanje na web mjestu.
  • Prilagodite složene smjernice.

Glavna svrha .htaccess je prilagodba stranice i imenika u skladu s određenim zahtjevima. To jest, putem ove datoteke SEO stručnjaci i programeri mogu promijeniti postavke web poslužitelja, čak i bez administratorskih prava. Ali promjene se rade samo za određenu stranicu i ne utječu na sam poslužitelj.

Konfiguracije poslužitelja mijenjaju se samo pomoću direktiva (naredbi) koje uključuju "ključ" i "vrijednost" za njega. Sve najvažnije upute za upravljanje poslužiteljem nalaze se u glavnoj konfiguracijskoj datoteci pod nazivom httpd.conf. Problem je što običan korisnik nema priliku pristupiti mu, budući da postoji veliki broj parametara o kojima ovisi izvedba cijelog poslužitelja. Zato je relevantan .htaccess koji vam omogućuje promjenu nekih direktiva u glavnoj datoteci.

Sve prilagodbe u pomoćnoj datoteci utječu na cijeli direktorij u kojem se ona nalazi. A ako prenesete ovaj dokument u korijensku mapu web mjesta, promjene će utjecati na cijeli resurs.

Gdje je .htaccess

Možete jednostavno provjeriti imate li servisnu datoteku. Razlikuje se od mnogih drugih dokumenata po tome što ima samo nastavak u obliku naslova iz riječi, dok samog naslova nema. Da, svi smo navikli vidjeti datoteke s nazivom riječi i ekstenzijom nakon točke, koja se sastoji od samo 2-3 slova. Ali prazna imena vam omogućuju da datoteke i mape učinite "skrivenim", otvorenim kodom. Iz ovoga proizlazi da .htaccess ostaje nevidljiv običnim korisnicima, pa ga neće moći mijenjati.

Ali ova metoda "skrivanja" datoteke ima i lošu stranu. U standardnim FTP klijentima na Windowsima i Macu dokument je vrlo često korisnicima nevidljiv, zbog čega oni pogrešno vjeruju da jednostavno ne postoji. Stoga osoba kreira novu datoteku za unos svojih konfiguracija, kodova za obradu grešaka, kreiranje pristupa mapama itd. Dobro je što većina ljudi ostavlja prostor na disku gdje je htaccess datoteka već automatski instalirana.

Ali ako ga ne pronađete, pokušajte otići do upravitelja datotekama koji je ugrađen u vaš hosting. Može prikazati skrivene datoteke i direktorije. Potražite ga u public_html, a zatim pomoću uređivača teksta instaliranog u programu ispravite i spremite datoteku, nakon čega će se sama prenijeti na poslužitelj.

Ako ne možete pronaći dokument na navedenoj putanji, izradite vlastiti. Može se dogoditi da se na ekranu pojavi greška. To znači da je ovaj hoster zabranio stvaranje servisne datoteke.

Jeftine hosting tvrtke često zabranjuju klijentima da kreiraju i mijenjaju takav dokument. Stoga ih se potiče da koriste njihove usluge po skupljim cijenama, tamo gdje je to dopušteno.

Kako pravilno kreirati .htaccess

Da biste to učinili, trebat će vam najčešći uređivač teksta, na primjer Notepad, koji se nalazi na bilo kojem računalu:

  1. Otvorite Notepad, nemojte ništa pisati u njega.
  2. Odaberite stavku "Datoteka" i pritisnite "Spremi kao".
  3. Prozor će se pojaviti nasuprot stavke "Vrsta datoteke" Izaberi « svivrste" ili "Sve datoteke".
  4. U redu "Naziv datoteke" Unesi . htaccess i kliknite na "Uštedjeti".

Zatim još jednom provjerite je li dokument ispravno izrađen. Provjerite jeste li ga spremili kao .htaccess.txt. Zatim prenesite datoteku u korijensku mapu poslužitelja i ako se greška 500 ne prikaže, onda ste sve učinili kako treba.

Od sada možete uređivati ​​datoteku, što će vam omogućiti fleksibilnije upravljanje web stranicom.

Primjeri korištenja

Razmotrite najpopularnije naredbe za .htaccess.

Preusmjeri

Ove se direktive koriste sa zavidnom redovitošću. Omogućuju vam preusmjeravanje posjetitelja sa starog URL-a na novu stranicu. To je moguće zahvaljujući preusmjeravanju 301. Dovoljno je unijeti kod datoteke:

Preusmjeri 301 /old_URL.html http://www.your_site_name.ru/new_URL.html

Općenito, direktiva će biti prikazana u ovom obliku:

Preusmjeri URL_LOCAL URL_REDIRECT

URL_LOKALNO je stara adresa s koje je korisnik premješten.

URL_PREUSMJERI– novi URL na koji se stranica prenosi.

U polju [ status] mogu biti sljedeće vrijednosti:

  1. 301 Stranica je trajno premještena.
  2. 302 – stranica je pomaknuta na neko vrijeme.
  3. 303 - pogledajte drugu stranicu.
  4. 410 – stranica je uklonjena.

mod_rewrite (složene direktive za prepisivanje)

Ovaj modul je sadržan u Apacheu. Ima obilje raznih direktiva za napredno upravljanje adresama. Glavne uključuju:

1. Indikacija glavnog ogledala

Dizajniran za pretvaranje domene iz www u URL koji nije www. Dovoljno je uvesti pravilo:

RewriteEngine On # uključuje RewriteCond %(HTTP_HOST) ^www.your_site_name\ru$ #uvjeti za pokretanje preusmjeravanja RewriteRule ^(*)$ http://your_site_name_/$1 #pravilo transformacije

2. Prijenos na https

Google tražilica do danas aktivno potiče vlasnike stranica na korištenje sigurne veze, za što je potrebno preusmjeriti korisnike s http na https pomoću koda:

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)

3. Stavljanje kose crte na kraj adrese

Ako ne želite da URL stranice završava nazivom direktorija http://your_site_name.ru/catalog, unesite kod u datoteku:

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

Nakon izvršenja ove naredbe, u budućnosti će se nakon adrese u automatskom načinu rada dodati kosa crta: http://your_site_name.ru/catalog/

4. Prijenos domene

Nakon promjene naziva stranice, ne zaboravite navesti u .htaccess:

RewriteEngine na RewriteCond %(HTTP_HOST) ^www\.yoursite.ru\.ru$ RewriteRule ^(.*)$ http://www.your-site.ru/$1

Prilikom optimizacije web mjesta za Yandex i Google, promjena naziva domene može biti prepuna neugodnih posljedica. Upute u robots.txt namijenjene Yandexu nadjačavaju se preusmjeravanjem 301. Ali to se može spriječiti dodavanjem pravila kodu:

RewriteEngine na RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^mysite\.ru RewriteRule ^(.*)$ http://www.my-site .ru/$1

5. Zabranjene naredbe za pretraživački robot

U .htaccessu, baš kao iu robots.txt, možete blokirati pristup stranici robotima tražilica:

RewriteEngine on RewriteCond %(USER_AGENT) Googlebot RewriteRule .* - [F] # F - izbacuje pogrešku 403 - nije dopušteno indeksirati

Obrada pogreške

Gotovo svaki korisnik interneta susreo se s greškom 404 not found (stranica nije pronađena ili izbrisana). Ali postoji ogroman broj drugih grešaka za koje vjerojatno niste čuli.

U servisnoj datoteci možete registrirati datoteku za prikaz tijekom pogreške. Ali prvo morate stvoriti istu datoteku u html ekstenziji i napisati u njoj što je ova greška. Zatim, ovisno o pogrešci koju koristite, kodirajte svoj .htaccess:

ErrorDocument 404 /siteerror404.html

Indeksni dokumenti

Kada posjetitelj uđe na stranicu, odmah se otvara datoteka index.xml. Indeksnu stranicu možete zamijeniti bilo kojom drugom dodavanjem koda:

DirectoryIndex name.xml

Ili dodajte nekoliko takvih stranica, a tražilica će ih pronaći u odgovarajućem nizu:

DirectoryIndex index.html index.php index.pl

Određivanje kodiranja

Ova funkcija je potrebna kako bi se tekst ispravno prikazao na zaslonu korisnika. Inače će umjesto normalne čitljive stranice vidjeti nerazumljive znakove. Danas se kodiranje široko koristi: Windows-1251 - ćirilica iUTF-8 - dvostruko bajtno kodiranje. Za odabir kodiranja u servisnom dokumentu koristi se sljedeća direktiva:

AddDefaultCharset WINDOWS-1251

I tako da u budućnosti, kada učitavate datoteke na poslužitelj, neće biti problema, navedite da će sve nove datoteke biti pretvorene u isto kodiranje:

CharsetSourceEnc WINDOWS-1251

Određivanje lozinki za direktorije

Da biste to učinili, u zatvoreni direktorij upišite:

AuthName "Potrebna lozinka" #poruka za traženje lozinke AuthType Basic #authentication type AuthUserFile /passwords/.psd #filename koji sadrži lozinke za prijavu Require valid-user #name of users who have access

Pristup datotekama i imenicima

Putem datoteke .htaccess možete zabraniti pristup određenim datotekama u cijelosti ili djelomično. Recimo da želite blokirati pristup direktoriju sustava. Zatim upišite odgovarajući .htaccess:

Odbiti od svih

Da biste onemogućili gledanje određene datoteke, na primjer, test.php:

odbiti od svih

Za otvaranje pregledavanja za određenu IP adresu, a istovremeno zatvaranje pristupa ostalima, naredba omogućuje:

Order Deny,Allow Deny from all Allow from 12.345.678.90

Zaključak

Kao što vidite, servisna datoteka .htacces jedan je od najvažnijih alata za punu izvedbu web resursa. A nakon što ste se upoznali s njegovim mogućnostima, vjerojatno ste se zapitali zašto ste prije malo znali o ovoj datoteci. To je učinkovit alat koji omogućuje SEO-ovima i programerima da naprave promjene u konfiguracijama web poslužitelja za određene stranice bez utjecaja na sam poslužitelj.

Zahvaljujući njemu, vlasnici internetskih projekata mogu obavijestiti tražilice i posjetitelje o promjeni domene i prebaciti ih na novu, zatvoriti pristup svim ili određenim podacima resursa, spriječiti njihovo ispravljanje i preuzimanje od strane neovlaštenih osoba, omogućiti pristup određenim datotekama putem IP-a i lozinke.

Koristimo Apache httpd kao glavni web poslužitelj. Apache se koristi za organiziranje većine web poslužitelja na svijetu i najmasovniji je proizvod svoje klase. Ovaj poslužitelj je vrlo konfigurabilan, vrlo sposoban i podržava sve poznate protokole za pokretanje web poslužitelja. Posebno za Apache stvorene su verzije takvih popularnih programskih jezika kao što su Perl i PHP, a ovaj se poslužitelj također lako integrira s široko korištenim DBMS-om (na primjer, MySQL).

Glavna stranica projekta nalazi se na httpd.apache.org, a glavna dokumentacija za verziju 1.3.xx dostupna je na httpd.apache.org/docs/.

Korisnicima pružamo mogućnost da sami konfiguriraju Apache pomoću odgovarajućih direktiva u . Na ovaj način možete riješiti većinu zadataka konfiguracije web poslužitelja u masovnom hosting okruženju.

Indeksna datoteka

Indeksna datoteka ili indeksna datoteka je datoteka koja se otvara prema zadanim postavkama kada korisnik pristupi direktoriju putem weba, a ne određena datoteka. Na primjer, vaš će posjetitelj zatražiti adresu http://vaša_domena/cijena/, gdje je cijena naziv kataloga. Indeksna datoteka je datoteka koja će biti prikazana korisniku kada pristupa direktoriju bez navođenja naziva određene datoteke u njemu.

Zadane datoteke indeksa su: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm ili default.html. Ako želite da se prvo otvori neka druga datoteka, morate nadjačati trenutne vrijednosti. Pročitajte kako to učiniti.

Namjena i upotreba .htaccess datoteke

Datoteka .htaccess(imajte na umu da je prvi znak u nazivu datoteke točka) koristi se za kontrolu Apache web poslužitelja od strane krajnjeg korisnika hostinga. U ovu datoteku stavljate direktive koje web poslužitelj prihvaća i obrađuje, izvršavajući radnje prema postavkama koje je postavio korisnik.

Datoteka .htaccess može se smjestiti u korijenski direktorij web poslužitelja (izravno u direktorij www). U ovom slučaju, direktive iz takvog .htaccessa vrijede za cijeli web poslužitelj. Također, .htaccess se može nalaziti u određenom poddirektoriju poslužitelja. Tada direktive koje su navedene u ovoj datoteci "nadilaze" radnju direktiva iz "glavne" datoteke koja se nalazi u direktoriju www ili u bilo kojem direktoriju više razine. To jest, učinak direktiva iz .htaccessa nasljeđuje se odozgo prema dolje, ali ne i obrnuto. Promjene u datoteci stupaju na snagu odmah. To je zbog činjenice da se informacije iz .htaccessa ponovno čitaju svaki put kada se pristupi Apache web poslužitelju.

Većina dostupnih direktiva web poslužitelja može se smjestiti u .htaccess. Treba napomenuti da direktive, u čijem se opisu u polju Context ne spominje .htaccess, nisu dostupne za korištenje u ovoj konfiguracijskoj datoteci. Koristeći AddType direktivu kao primjer, vidimo da polje Kontekst sadrži spominjanje .htaccess, tako da ga možete koristiti:

Ako niste uspjeli upotrijebiti potrebnu direktivu, a vidjeli ste grešku nakon dodavanja direktive u .htaccess, najvjerojatnije je upotreba naredbe zabranjena u uvjetima virtualnog hostinga. Pišite tehničkoj podršci, pokušat ćemo vam pomoći. Detaljno opišite problem i naznačite ciljeve koje želite postići korištenjem ove direktive.

Vatrozid web aplikacije

Vatrozid web aplikacije (ModSecurity) potreban je za otkrivanje i sprječavanje napada na web stranice. Provjera se provodi prema određenom skupu pravila, a ako nije prošla, zahtjev stranici se odbija s greškom (403 zabranjeno).

U slučaju lažno pozitivnih rezultata, moguće je onemogućiti pravila putem .htaccess pomoću opcija u nastavku:

  • SecRuleRemoveById - uklonite pravilo prema ID-u
  • SecRuleRemoveByTag - uklonite pravilo po oznaci.

Možete odrediti koje pravilo treba onemogućiti u zapisniku grešaka error.log

Primjer onemogućavanja prema ID-u:

SecRuleRemoveById 933100 933150

Primjeri onemogućavanja pomoću oznake:

SecRuleRemoveByTag "attack-injection-php" SecRuleRemoveByTag "CWAF"

Nadjačavanje kodiranja:

Prema zadanim postavkama web poslužitelj "daje" sve html dokumente koji se nalaze na poslužitelju u windows-1251 kodiranju. Možete promijeniti vrstu kodiranja u kojem će web poslužitelj "dati" informacije na vašem osobnom računu.

Da biste to učinili, idite na odjeljak Stablo usluga i odaberite domenu za koju želite promijeniti vrstu kodiranja. Zatim na popisu parametara pronađite liniju kodiranje (zadano) i kliknite na dodati kao što je prikazano na donjoj slici.

Također možete promijeniti kodiranje pomoću datoteke .htaccess. Da biste to učinili, dodajte liniju

AddType "text/html; charset=koi8-r" .html .htm .shtml

Nakon što primi takav .htaccess , web poslužitelj Apache izdat će zaglavlje pregledniku klijenta, što će pokazati da dokument ima koi8-r kodiranje.

Ako vaš resurs ima html dokumente u različitim kodovima (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), tada ćete možda morati onemogućiti prisilni izlaz zaglavlja s kodiranjem windows-1251. Da biste to učinili, redak se dodaje u .htaccess:

AddDefaultCharset Off

U tom slučaju, odgovarajuće kodiranje mora biti napisano na svakoj html stranici u obliku oznake

Primjer: kako zaključati imenik lozinkom

Jedan od uobičajenih zadataka koje .htaccess rješava je ograničavanje pristupa određenom direktoriju na poslužitelju. Na primjer, morate dati pristup određenom imeniku pojedinačnim posjetiteljima, a istovremeno im dati jedinstvenu prijavu i lozinku.

U direktoriju kojem želimo ograničiti pristup lozinkom, kreirajte .htaccess datoteku sa sljedećim direktivama:

AuthType Basic AuthName "Neko ime" AuthUserFile /home/ uXXXXX/.htpasswd zahtijeva valjanog korisnika

Staza /home/uXXXXX/.htpasswd označava puni put do datoteke lozinke na disku našeg poslužitelja. Ako, na primjer, .htpasswd datoteku (ona će sadržavati lozinke) smjestite u svoj matični direktorij, odakle dolazite do poslužitelja preko FTP-a, tada će put do te datoteke izgledati ovako /home/uXXXXX/.htpasswd, Gdje uXXXXX- naziv vaše virtualne platforme (na primjer, u12345).

U direktivi AuthUserFile navodimo apsolutni put do datoteke s prijavama/lozinkama, koje ćemo kreirati malo kasnije. Ako stvarate .htaccess datoteku na svom računalu, a ne izravno na poslužitelju pomoću uređivača teksta, imajte na umu da se .htaccess mora prenijeti putem FTP-a isključivo u tekstualnom (ASCII) načinu.

Stvorite datoteku zaporke. Datoteka zaporke mora sadržavati retke poput lozinka. Lozinka mora biti šifrirana pomoću MD5 algoritma. Jedan od načina za izradu takve datoteke je korištenje programa koji dolazi uz Apache - htpasswd (na našem poslužitelju nalazi se u imeniku /usr/local/bin/, puni put - /usr/local/bin/htpasswd).

Razmotrite kako stvoriti datoteku lozinke u unix ljusci izravno na poslužitelju. Idemo u ljusku i izvršit ćemo sljedeće naredbe:

  • htpasswd -mbc .htpasswd korisnik1 sNQ7j9oR2w kreiramo novu .htpasswd datoteku u koju dodajemo unos za korisnika user1 s lozinkom navedenom u naredbenom retku. Zahtjev Obavezno zamijenite sNQ7j9oR2w svojom vlastitom lozinkom - ova lozinka je ovdje navedena samo kao primjer
  • htpasswd .htpasswd korisnik2 dodaje se već postojećoj .htpasswd datoteci korisnika2, a lozinka se unosi ručno kao odgovor na odgovarajući programski zahtjev

Ako koristite Windows i ne želite koristiti unix shell za generiranje lozinki, možete preuzeti Windows verziju programa htpasswd i stvoriti datoteku lozinke na svom računalu, a zatim je učitati na poslužitelj. Ako već imate instaliranu Windows verziju Apachea, datoteka htpasswd.exe možete pronaći u katalogu Program Files\Apache Group\Apache\bin\.

Dakle, nabavite htpasswd.exe i koristite ga za generiranje lozinki poput ove:

  • htpasswd.exe -mc .htpasswd korisnik1 kreirajte novu datoteku lozinke htpasswd.exe, interaktivno će se tražiti lozinka i njezina potvrda
  • htpasswd.exe -m .htpasswd korisnik2 dodajte korisnika user2 u postojeću datoteku lozinke htpasswd.exe interaktivnim traženjem lozinke

Nakon završetka svih prijava, datoteku je potrebno učitati na poslužitelj.

Primjer: nadjačavanje indeksne datoteke

Situacija: Korisnik je pristupio imeniku http://www.your_domain.ru/price/. S takvim zahtjevom prvi se otvara i prikazuje. Ako želite nadjačati indeksnu datoteku i napraviti tako da prva datoteka koja se otvara nije index.htm, već npr. moj indeks.php, tada to možete učiniti postavljanjem sljedećih uputa u datoteku .htaccess u odgovarajućem direktoriju:

DirectoryIndex myindex.php

Nakon što primi .htaccess s takvim sadržajem, web poslužitelj Apache otvorit će datoteku prema zadanim postavkama moj indeks.php.

Primjer: zabrana i dopuštenje izdavanja kotacije

U nekim slučajevima potrebno je prikazati popis datoteka u direktoriju (popis direktorija) u slučaju da nema datoteke u direktoriju, što se prikazuje prema zadanim postavkama. Da biste to učinili, dodajte sljedeći redak u .htaccess:

Opcije+Indeksi

Datoteka .htaccess mora biti kreirana točno u direktoriju u kojem planirate dopustiti unos. Ova će direktiva također utjecati na sve poddirektorije (to se postiže direktivom koja je prema zadanim postavkama omogućena u postavkama virtualnog hosta DopustiNadjačaj sve).

Direktiva je uključena prema zadanim postavkama. Opcije-Indeksi i u slučaju da dobijete 403 HTTP grešku.

Ako kodiranje u nazivima datoteka nije ispravno prikazano, upotrijebite svojstvo Charset za navođenje ispravnog kodiranja. Na primjer, za prikaz ćiriličnih znakova u UTF-8 kodiranju, dodajte sljedeće upute u .htaccess datoteku:

IndexOptions Charset=UTF-8

Primjer: prilagođene stranice s pogreškama

Primjer: zabrana pristupa s određenih IP adresa

Ponekad postaje potrebno zabraniti pristup stranici ili njenom dijelu s određenih IP adresa.

U tom slučaju trebate stvoriti .htaccess datoteku s direktivama u željenom direktoriju. Na primjer, za odbijanje pristupa s IP adrese 172.16.16.16:

Order Allow,Deny Allow from All Deny from 172.16.16.16

Sada kada pokušate pristupiti stranici s IP adrese 172.16.16.16 posjetitelj će dobiti grešku 403 ili vaša stranica za tu grešku.

Navođenje dijela adrese u obrascu 172.16.16 ograničiti pristup iz podmreže 172.16.16/24.

Ponekad trebate učiniti suprotno i blokirati pristup stranici za sve IP adrese osim vaše (). Na primjer, da biste dopustili pristup samo IP adresi 172.16.16.16, dodajte sljedeću izjavu u svoju .htaccess datoteku:

Narudžba Dopusti, Odbij Dopusti od 172.16.16.16

Za detaljniju dokumentaciju pogledajte Apache dokumentaciju.

Primjer: Ograničite pristup određenim datotekama

Ponekad je potrebno zabraniti pristup određenim datotekama. Na primjer, u konfiguracijske datoteke koje sadrže pojedinosti o pristupu bazama podataka, sučeljima itd. Recimo u datoteku config.cfg pohranjujete prijavu/lozinku za pristup bazi podataka. Napravite .htaccess datoteku u ovom direktoriju s direktivama:

Red dopusti, zabrani Odbij od svih

Sada, ako posjetitelj upiše u preglednik nešto poput http://www.your_domain.ru//config.cfg, dobit će pogrešku 403 ili vašu stranicu za tu pogrešku.

Primjer: zadnje modificirano zaglavlje

U nekim slučajevima potrebno je da web poslužitelj izda HTTP zaglavlje Zadnja promjena. Na primjer, kada registrirate svoj resurs na Yandexu, pojavljuje se pogreška " Pogrešni datumi». Za statičke dokumente, poslužitelj će uvijek vratiti posljednju izmijenjenu vrijednost. Ovo vrijedi za html datoteke. Za SSI, poslužitelj će vratiti posljednju modificiranu vrijednost ako je navedena direktiva "XBitHack full" (samo napišite ovaj redak u .htaccess), a atribut "executable" za grupu je postavljen za datoteku kojoj se pristupa. U skriptama se zadnja izmjena vraća drugim sredstvima. Na primjer, s obzirom da php skripta dinamički generira kod, bilo bi najlogičnije navesti trenutni datum i vrijeme kao zadnji modificirani./>

Ovo se provodi na sljedeći način:

Pažnja: naredba Zaglavlje mora se izvršiti u php skripti prije nego što skripta počne ispisivati ​​html tekst u preglednik korisnika.

Datoteka .htaccess koristi se za konfiguraciju Apache poslužitelja, ali i za nekoliko drugih poslužitelja. Unatoč čudnom proširenju, to je jednostavna tekstualna datoteka koja se može mijenjati u bilo kojem uređivaču. U ovom vodiču ćemo pogledati kako se .htaccess može koristiti u našim projektima.

Datoteka .htaccess koristi isti format kao glavna konfiguracijska datoteka za Apache: httpd.conf. Većina postavki može se koristiti u obje datoteke.

Postavke postavljene u .htaccess datoteci u direktoriju će nadjačati postavke postavljene u httpd.conf za taj direktorij i njegove poddirektorije.

Datoteka .htaccess se ponekad naziva dinamičkom konfiguracijskom datotekom jer je poslužitelj čita svaki put kada se uputi zahtjev prema direktoriju koji je sadrži. Ova činjenica znači da će promjene u .htaccess datoteci odmah stupiti na snagu, bez ponovnog pokretanja poslužitelja, za razliku od promjena u glavnoj konfiguracijskoj datoteci. To također znači da gubite malo performansi kada koristite .htaccess datoteku. Ali vrlo je pogodan za slučajeve kada nema pristupa glavnoj konfiguracijskoj datoteci poslužitelja.

Preusmjeravanja i promjene URL-a

Popularna upotreba datoteke .htaccess je postavljanje preusmjeravanja ili promjena URL-a. Ova metoda pomaže u promjeni naziva domene za potrebe SEO-a, ili ponovnoj izgradnji strukture datoteke projekta, ili čine duge teško pamtljive URL-ove jednostavnim i razumljivim.

Preusmjerava

Preusmjeravanja mogu biti vrlo jednostavna, na primjer:

Preusmjeri 301 ^old\.html$ http://localhost/new.html

U ovom slučaju koristi se HTTP statusni kod 301 (trajno premješten) i svi zahtjevi na old.html preusmjeravaju se na new.html. Ovo koristi regularni izraz za podudaranje URL-a s pravilom, što dodatno usložnjava izradu pravila, ali osigurava da je URL valjan. Morate navesti puni URL resursa na koji preusmjeravate.

Promjene

Pravilo promjene također može biti vrlo jednostavno:

RewriteEngine na RewriteRule ^old\.html$ new.html

U ovom primjeru postoji jednostavno preusmjeravanje s jedne datoteke na drugu, koje se izvodi transparentno, bez mijenjanja sadržaja adresne trake u pregledniku. Prva direktiva, RewriteEngine on, jednostavno osigurava da motor za prepisivanje radi.

Za ažuriranje sadržaja adresne trake preglednika posjetitelja, možemo upotrijebiti R oznaku na kraju RewriteRule:

RewriteRule ^old\.html$ http://hostname/new.html

Oznaka r uzrokuje vanjsko preusmjeravanje, tako da će URL odgovarati novoj stranici. Također možete upotrijebiti statusni kod za zastavu, što će dovesti do toga da preglednik posjetitelja osvježi stranicu.

Jedna od mogućih upotreba preusmjeravanja je promjena URL-ova u jednostavniji oblik za posjetitelje i alate za indeksiranje. Razmotrite primjer:

RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

Ovo pravilo omogućuje posjetitelju korištenje URL-a like proizvodi/gramofoni/tehnika/sl1210, koji će se transformirati u product.php?cat=turntables& brand=technics&prod=sl1210. Zagrade između kosih crta u primjeru regularnog izraza vrše grupiranje - svaki od njih možemo koristiti kao $1, $2 i $3 redom. Kombinacija [^/]+ u zagradama odgovara bilo kojem znaku, osim kose crte, u bilo kojem broju.

U praksi, promjena URL-a ima znatno složenija pravila od onih opisanih u našim primjerima, ali nam omogućuju rješavanje vrlo složenih problema.

Prilagođena stranica pogreške

Prikazivanje standardne stranice 404 na web stranici je nepraktično. Mnoga mjesta iskorištavaju ovu značajku kako bi posjetitelju ponudila stranicu s pogreškom koja odgovara stilu ostatka sadržaja i pruža dodatne informacije koje mogu zadržati posjetitelja.

Pravilo za promjenu stranice 404 vrlo je slično pravilu preusmjeravanja:

ErrorDocument 404 "/404.html"

Ako se pojavi pogreška 404, prikazat će se navedena stranica. Također možete napraviti stranice za prikaz drugih grešaka poslužitelja.

Ograničenja pristupa određenim resursima

Pomoću datoteke .htaccess možemo ograničiti pristup bilo kojoj datoteci ili direktoriju. Na primjer, kod:

AuthName "Unesite korisničko ime i lozinku" AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic

Mora se nalaziti u imeniku koji želite zaštititi od slobodnog pristupa. Direktiva AuthName definira poruku koja će biti prikazana u dijaloškom okviru lozinke, a pravilo AuthUserFile definira put do datoteke .htpasswd. Direktiva Require navodi da samo registrirani korisnici mogu pristupiti datoteci.

Kako biste zaštitili određenu datoteku, trebate priložiti gornji kod u direktivu , koji definira naziv datoteke:

AuthName "Unesite korisničko ime i lozinku" AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic

Ova značajka zahtijeva datoteku .htpasswd koja sadrži popis korisničkih imena i šifriranih lozinki odvojen dvotočkom za pristup privatnim resursima. Ova datoteka mora biti pohranjena u direktoriju koji nije dostupan s mreže. Postoje različiti alati za automatsko generiranje takve datoteke, budući da lozinka mora biti pohranjena šifrirana.

Blokiranje pristupa određenim posjetiteljima

Još jedna upotreba datoteke .htaccess je brzo i jednostavno blokiranje svih zahtjeva s određene IP adrese ili agenata. Samo trebate dodati pravila u .htaccess datoteku:

Red dopusti, deny deny od 192.168.0.1 dopusti od svih

Direktiva reda govori Apacheu kojim redoslijedom treba razmotriti direktive dopusti/zabrani. U primjeru, direktiva dopuštanja se prvo procjenjuje, a zatim slijedi deny. Prvo se razmatra pravilo dopusti od svih (iako je definirano nakon pravila odbijanja u datoteci) i sve IP adrese su dopuštene. Zatim, ako IP adresa klijenta odgovara onoj navedenoj u direktivi zabrane, tada je pristup njoj blokiran. Možete blokirati pristup nizu IP adresa navodeći, na primjer, 192.168 .

Da biste blokirali pristup određenim agentima, možete koristiti druga pravila:

RewriteCond %(HTTP_USER_AGENT) ^OrangeSpider RewriteRule ^(.*)$ http://%(REMOTE_ADDR)/$

U ovom primjeru, svaki klijent čiji niz HTTP_USER_AGENT počinje s OrangeSpider (loš bot) bit će preusmjeren na adresu s koje je došao. Regularni izraz odgovara bilo kojem pojedinačnom znaku (.) u bilo kojem broju (*), a varijabla %(REMOTE_ADDR) koristi se za adresu. Oznaka l govori Apache poslužitelju da je ovo pravilo posljednje za klijenta i da se na njemu ne moraju izvoditi nikakve druge operacije.

Navedite izlazni način za IE

Osim kontrole odgovora poslužitelja na određene zahtjeve, možemo utjecati na preglednike korisnika, poput usmjeravanja IE-a na određeni mehanizam za prikazivanje. Možete upotrijebiti modul mod_headers, ako postoji, za postavljanje X-UA-kompatibilnog zaglavlja:

Skup zaglavlja X-UA-kompatibilan "IE=Edge"

Dodavanje ovog retka u .htaccess datoteku uputit će IE da koristi najbolji dostupni način prikaza. Također možemo izbjeći korištenje ovog zaglavlja za datoteke gdje nije potrebno korištenjem pravila :

Zaglavlje nije postavljeno X-UA-kompatibilno

Uključite predmemoriju

Predmemoriranje je vrlo jednostavno za instalaciju i ubrzava učitavanje vaše stranice. Postavljanjem datuma ažuriranja za resurse koji se rijetko mijenjaju, možemo spriječiti višestruko preuzimanje dijela sadržaja koji ostaje nepromijenjen.

Na primjer:

ExpiresActive on ExpiresByType image/gif "pristup plus 1 mjesec" ExpiresByType image/png "pristup plus 1 mjesec" ExpiresByType image/jpg "pristup plus 1 mjesec" ExpiresByType image/jpeg "pristup plus 1 mjesec" ExpiresByType video/ogg "pristup plus 1 mjesec" ExpiresByType audio/ogg "pristup plus 1 mjesec" ExpiresByType video/mp4 "pristup plus 1 mjesec" ExpiresByType video/webm "pristup plus 1 mjesec"

Pravila ExpiresByType možete dodati za bilo koju vrstu sadržaja. Direktiva ExpiresActive on jednostavno uključuje generiranje zaglavlja isteka resursa. Ova direktiva ovisi o prisutnosti modula mod_expires na Apache poslužitelju.

Omogući kompresiju

Drugi način utjecaja na performanse resursa je korištenje kompresije:

FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css FilterProvider COMPRESS DEFLATE resp=Content-Type $text/javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no

Ova shema kompresije radi na novim verzijama Apachea (2.1+) s instaliranim modulom mod_filter. Za komprimiranje sadržaja koristi algoritam DEFLATE. U primjeru navodimo text/html, text/css i text/javascript kao vrste resursa koje treba komprimirati.

Definicija filtra počinje naredbom FilterDeclare s opcijom COMPRESS. Zatim navodi vrste sadržaja na koje će filtar utjecati. Pravilo FilterChain govori poslužitelju da izgradi lanac na temelju popisa pravila FilterProvider. Direktiva FilterProtocol omogućuje vam određivanje opcija koje koristi filtar tijekom izvođenja. Morate navesti opcije change=yes (sadržaj se može mijenjati filtrom (u našem primjeru - komprimirani)) i byteranges=no (filtar se može koristiti samo za pune datoteke).

Stare verzije Apachea koriste modul mod_ispuhati za konfiguraciju DEFLATE kompresije. Ovdje je manje kontrole nad filtrom, ali pravila su jednostavnija:

SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript

Primjer postavlja algoritam kompresije pomoću pravila SetOutputFilter i definira tipove datoteka sadržaja za filtar pomoću pravila AddOutputFilterByType.

Tipično, poslužitelj koristi jedan od opisanih modula, ovisno o verziji Apache poslužitelja. U pravilu se zna koji će se modul koristiti. Ali ako stvorite generičku htaccess datoteku koja se može koristiti na različitim poslužiteljima, tada možete uključiti oba skupa pravila u nju pomoću direktive . Na taj će se način koristiti ispravna pravila i bit će moguće izbjeći generiranje pogreške 500 ako se pravila za deinstalirane module nađu u konfiguracijskoj datoteci. Također morate imati na umu da kada postavljate poslužitelje na hosting koji podržava veliki broj stranica na jednoj procesorskoj jedinici, kompresija se može onemogućiti kako se ne bi stvaralo veliko opterećenje

Zaključak

Ova lekcija pokriva najčešće korištene upotrebe htaccess datoteke. Ovdje navedene informacije uvod su u vrlo popularnu temu. Postoje mnoge druge opcije i konfiguracije koje možete istražiti i iskoristiti u svoju korist.

.htaccess(s točkom na početku naziva) konfiguracijska je datoteka Apache poslužitelja koja vam omogućuje konfiguriranje poslužitelja u zasebnim direktorijima (mapama) bez pružanja pristupa glavnoj konfiguracijskoj datoteci (apache/conf/httpd.conf). Na primjer, postavite dopuštenja za datoteke u direktoriju, promijenite nazive datoteka indeksa, samostalno rješavajte pogreške Apachea preusmjeravanjem posjetitelja na posebne stranice s pogreškama. .htaccess je običan tekstualni dokument čija je ekstenzija htaccess. Ova se datoteka obično nalazi u korijenu stranice, ali možete stvoriti dodatne .htaccess datoteke za različite direktorije svoje stranice.

Mod_prepisati- modul koji koriste web poslužitelji za prevođenje URL-ova.

Ako želite zabilježiti sve operacije izvedene s mod_rewrite, to možete omogućiti sljedećim unosom u httpd.conf:

RewriteLog /usr/local/apache/logs/mod_rewrite.log RewriteLogLevel 1

Mod_rewrite direktive modula

Najčešće korištene opcije

%(REQUEST_URI) Niz zahtjeva (bez naziva domene i GET parametara), primjer "/server/htaccess/"
%(HTTP_HOST) Naziv domene, na primjer "max22.ru"
%(QUERY_STRING) GET niz parametara

Mogućnosti implementacije preusmjeravanja pomoću datoteke .htaccess

  1. Jednostavno preusmjeravanje:
    Preusmjeri 301 / http://www.domainname.ru/ ili preusmjeri /secret http://www.site.ru/nosecret ili # koristeći regularni izraz RedirectMatch 301 .* http://www.site.ru/? .htaccess ili httpd.conf za Apache. Prvi "/" znači da će sve s najviše razine stranice, uključujući sve poddirektorije, biti preusmjereno (ne zaboravite staviti zadnji "/"). Ako želite preusmjeriti samo stranicu, zadržavajući PR stare stranice, možete učiniti sljedeće:

    Preusmjeri 301 /old/old.htm http://www.you.ru/new.htm gdje:
    /old/old.htm - put i naziv stare stranice
    http://www.you.com/new.htm - novi put i novi naziv premještene stranice

  2. Preusmjeravanje na bilo koju stranicu po korisničkom ip-u ili kada se traži određena stranica (kao i po maski imena).
    Ako korisnik ima ip 192.152.37.125, tada će biti preusmjeren na stranicu user.php: SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule ^/$ /user.php
  3. Preusmjeravanje kada se traže određene datoteke. Ako se traže datoteke čiji nastavak nije naveden u .htaccess datoteci (gif i jpg), tada slijedi preusmjeravanje: RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
  4. Korištenje mod_rewrite:
    Opcije +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yourdomain\.ru RewriteRule ^(.*)$ http://www.yourdomain.ru/$1
  5. Preusmjeri regularnim izrazom:
    RedirectMatch 301 (.*) http://www.yourdomain.ru$1 Registrirano u datoteci .htaccess. (.*) RedirectMatch zapravo odgovara uzorcima regularnog izraza nakon naziva domene. Stoga se ne možete podudarati s uzorkom na ^/yourdomain.ru. Međutim, moguće je pretvoriti stranice koje koriste nastavak .html u datoteke istog imena, ali s nastavkom .php: RedirectMatch 301 (.*)\.html$ http://www.yourdomain.ru$1.php Ako morate napraviti drugačije preusmjeravanje za pojedinačne stranice, možete koristiti sljedeće: RedirectMatch Trajno ^/html/resources.html$ http://www.newdomain.com/resources.php RedirectMatch Trajno ^/html/other_page.html$ http ://www.newdomain.com /other_page.php RedirectMatch Trajno ^/(.*)$ http://www.newdomain.com/ " Trajno podudaranje preusmjeravanja" je ekvivalent "RedirectMatch 301", redak s "*(Wildcard)" trebao bi biti posljednji na ovom popisu.
  6. Stvaranje čitljivih URL-ova
    Za pretvaranje, na primjer, www.site.ru/product.php?id=123 u www.site.ru/product/123 ovako: RewriteEngine on RewriteRule ^product/([^/\.]+)/?$ product .php?id=$1 [L] U sljedećem primjeru pretvaramo www.site.ru/script.php?product=123 u www.site.ru/cat/product/123/: RewriteRule cat/(.* )/(. *)/$/script.php?$1=$2
  7. Preusmjeri na PHP:
    zaglavlje ("HTTP/1.1 301 trajno premješteno"); zaglavlje ("Lokacija: http://www.newdomain.ru/newdir/newpage.htm"); Izlaz(); Naravno, morate stvoriti stranicu, kada joj se pristupi, preusmjeravanje će se dogoditi i postaviti je na poslužitelj. I bolje navedite HTTP/1.1 (umjesto HTTP/1.0 ili HTTP/0.9 koji ne podržavaju dijeljeni hosting)
  8. Preusmjerite sve datoteke u mapi u jednu datoteku.
    Na primjer, više vam ne treba odjeljak stranice Super popust i želite preusmjeriti sve zahtjeve u mapu /superdiscount u jednu datoteku /hot-offers.php. Da biste to učinili, dodajte sljedeći kod u .htaccess. RewriteRule ^superdiscount(.*)$ /hot-offers.php
  9. Preusmjeri cijelu mapu osim jedne datoteke
    U sljedećem primjeru, sve datoteke u mapi /superdiscount bit će preusmjerene na /hot-offers.php OSIM /superdiscount/my-ebook.html koje bi trebale biti preusmjerene na /hot-to-make-million.html RewriteRule ^superdiscount/ moja -ebook.html /hot-to-make-million.html RewriteRule ^superdiscount(.*)$ /hot-offers.php
  10. Preusmjerite dinamički URL na novu datoteku.
    Ova je opcija korisna ako želite preusmjeriti dinamički URL s parametrima u novu statičku datoteku. RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm To jest, sada zahtjev za datoteku poput http://www.kass.ws/article.jsp?id=8632 i/ili http:/ /www .kass.ws/article.jsp?id=1245 bit će poslan u datoteku http://www.kass.ws/latestnews.htm.
  11. Masovno preusmjeravanje novih datoteka.
    Sada prijeđimo na najteži dio, kada trebate preusmjeriti puno URL-ova, na primjer nakon promjene CMS-a. Ovdje se odmah pojavljuju brojni problemi. Prvo, dodavanje svih promijenjenih adresa u .htaccess datoteku trajat će jako dugo, a sam zadatak je neugodan. Drugo, previše unosa u .htaccess datoteci usporit će Apache poslužitelj. I treće, pri unosu toliko podataka velika je vjerojatnost da ćete negdje pogriješiti. Stoga je najbolji izlaz angažirati programera koji će za vas napisati dinamičko preusmjeravanje.
    Primjer u nastavku napisan je u PHP-u, ali se može napraviti i na bilo kojem jeziku. Recimo da ste prešli na novi sustav veza na svojoj web stranici i sve datoteke koje završavaju na stari ID trebale bi se spojiti. Prvo stvaramo tablicu u bazi podataka koja sadrži stari ID i novi URL za preusmjeravanje. old_id INT new_url VARCHAR (255) Zatim napišite kod koji će vaš stari ID povezati s novim URL-ovima
    Nakon toga dodajte sljedeći redak u .htaccess: RewriteRule ^/product-(.*)_(+).php /redirectold.php?productid=$2 zatim kreirajte PHP datoteku redirectold.php koja će podržavati 301 preusmjeravanje:

    Sada će svi zahtjevi prema vašim starim URL-ovima pozvati redirectold.php koji će pronaći novi URL i vratiti odgovor 301 s vašim novim URL-om.

    Preusmjerava na temelju vremena

    Kada su u pitanju trikovi s vremenski osjetljivim sadržajem, mnogi webmasteri još uvijek koriste CGI skripte koje preusmjeravaju na posebne stranice. Kako se to može učiniti putem mod_rewrite?

    Postoje mnoge varijable pod nazivom TIME_xxx za uvjete preusmjeravanja. U kombinaciji s posebnim leksikografskim uzorcima za usporedbu STRING i =STRING možemo raditi vremenski ovisna preusmjeravanja: RewriteEngine na RewriteCond %(TIME_HOUR)%(TIME_MIN) >0700 RewriteCond %(TIME_HOUR)%(TIME_MIN)<1900 RewriteRule ^foo\.html$ foo.day.html RewriteRule ^foo\.html$ foo.night.html

    Ovo vraća sadržaj foo.day.html kada se traži URL foo.html od 07:00 do 19:00, a ostatak vremena sadržaj foo.night.html.

  12. Sve zahtjeve uklanjamo na početku "www."
    RewriteEngine na # najavljuje da želimo koristiti mod_rewrite RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^/?(.*) http://%1/$1

    Provjeravamo naziv domene, ako počinje s www, tada će raditi pravilo: "svi, na http://%1/$1". Ovdje je %1 naša domena bez www (preuzeto iz uvjeta), a $1 je adresa (preuzeto iz samog pravila).

  13. Uklanjamo sve zahtjeve na kraju index.php. Preusmjeravanje na stranicu bez index.php

    Tražilice loše tretiraju duplicirane stranice. Da biste to izbjegli, morate obrisati (zalijepiti) stranice kao što su http://vaša_domena/ i http://vaša_domena/index.php

    RewriteCond %(THE_REQUEST) ^.*/index.php RewriteRule ^(.*)index.php$ http://%(HTTP_HOST)/$1

  14. Promjena ekstenzije .html na .php
    Ponekad se dogodi da imate statičnu web stranicu, a potrebna vam je neka vrsta php skripte za rad na njoj. Da biste to učinili, trebate reći poslužitelju da ovu stranicu tretira kao php datoteku. AddHandler application/x-httpd-php .html Ovaj se trik također može koristiti za druge ekstenzije datoteka: AddHandler application/x-httpd-php .xml AddHandler application/x-httpd-php .asp

Odbijte pristup određenom imeniku

  1. za sve za sve datoteke u direktoriju: odbiti od svih
  2. u određenu datoteku: odbiti od svih
  3. po korisniku ip: nalog zabrani, dopusti zabrani od svih dopusti od 192.152.37.125 Samo će korisniku s ip 192.152.37.125 biti dopušten pristup ovom direktoriju.

    A ako želite, naprotiv, zabraniti pojedinim IP korisnicima pristup vašoj web stranici, napišite sljedeće retke:

    naručiti dopusti, odbiti dopustiti od svih odbiti od 192.152.37.125 odbiti od 123.456.177

  4. Opcije direktive - Indeksi - zabrana prikazivanja sadržaja direktorija u nedostatku indeksne datoteke Ponekad je potrebno napraviti tako da u nedostatku datoteke u direktoriju, koja se prikazuje prema zadanim postavkama, popis datoteka u imenik se ne prikazuje. Zatim možete dodati sljedeći redak u .htaccess: Opcije - Indeksi U ovom slučaju, umjesto popisa datoteka u direktoriju, posjetitelj će dobiti HTTP grešku 403 - pristup zabranjen.
  5. Odbijte pristup datotekama s više vrsta proširenja
  6. odbiti od svih

    Pristup datotekama s nastavcima *.inc, *.conf i *.cfg je zabranjen. Iako direktiva ne radi s regularnim izrazima prema zadanim postavkama, oni se mogu omogućiti stavljanjem znaka tilde (~) u opcije direktive. Sintaksa je sljedeća:

    [tilda] [razmak] [dalje_sve_bez razmaka] Da biste blokirali ovaj pristup, napišite sljedeće: RewriteRule ^.htaccess$ - [F] Ovo pravilo se prevodi na sljedeći način:
    Ako netko pokuša pristupiti datoteci .htaccess, sustav bi trebao proizvesti kod pogreške "HTTP odgovor 403" ili "403 zabranjeno - nemate dopuštenje za pristup /.htaccess na ovom poslužitelju".

    Konstrukcija ^.htaccess$ u ovom regularnom izrazu znači:
    ^ - sidro početka linije
    $ - krajnje sidro
    . - u regularnim izrazima točka "." označava meta znak i mora biti zaštićen obrnutom kosom crtom ako i dalje želite koristiti stvarnu točku.

    Naziv datoteke mora se nalaziti točno između početnog i završnog sidra. Ovo će osigurati da će samo taj određeni naziv datoteke, i nijedan drugi, generirati kod pogreške.
    [F]- posebna zastava "zabrane" (zabranjeno).
    - ne uzimaju u obzir velika i mala slova.
    - znači "ili sljedeći uvjet".

Definicija kodiranja

Određivanje kodiranja u kojem poslužitelj "daje" datoteke

Opcije AddDefaultCharset windows-1251: KOI8-R, UTF-8, Windows-1251

Određivanje kodiranja za učitane datoteke

CharsetSourceEnc windows-1251

Postavljanje lozinke za imenik pomoću .htaccess

Za postavljanje lozinke za imenik, možete koristiti osnovni sustav autorizacije koji se nalazi na Apache web poslužitelju. Napravite .htaccess datoteku u direktoriju kojem želimo ograničiti pristup lozinkom sa sljedećim direktivama: AuthType Basic AuthName "Some Name" AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd require valid-user Path /www /some_login/ www/htdocs/some_dir/.htpasswd je puna staza do datoteke lozinke na disku našeg poslužitelja. Ako npr. datoteku .htpasswd (sadržavat će lozinke) smjestite u svoj matični direktorij, u koji dolazite prijavom na server preko FTP-a, tada će put do te datoteke izgledati /www/some_login/www/htdocs /some_dir/.htpasswd, gdje je some_login vaša prijava. U direktivi AuthUserFile navodimo apsolutni put do datoteke s prijavama/lozinkama, koje ćemo kreirati malo kasnije. Ako kreirate .htaccess datoteku na svom računalu, a ne izravno na poslužitelju pomoću uređivača teksta, obratite posebnu pozornost na to da se .htaccess mora prenijeti putem FTP-a u striktno tekstualnom (ASCII) načinu rada.

Stvorite datoteku zaporke. Datoteka zaporke mora sadržavati retke poput login:password. Lozinka mora biti šifrirana pomoću MD5 algoritma. Jedan od načina za izradu takve datoteke je korištenje programa koji dolazi s Apacheom - htpasswd (na našem poslužitelju nalazi se u direktoriju /usr/local/apache/bin, puni put je /usr/local/apache/bin/ htpasswd).

Razmotrite kako stvoriti datoteku lozinke u unix ljusci izravno na poslužitelju. Idemo u ljusku i izvršit ćemo sljedeće naredbe:

Htpasswd -mbc .htpasswd user1 7B1safkir - kreirajte novu .htpasswd datoteku u koju dodajemo unos za korisnika user1 s lozinkom navedenom u naredbenom retku. htpasswd .htpasswd korisnik2 - dodajte korisnika2 u već postojeću .htpasswd datoteku i ručno unesite lozinku kao odgovor na odgovarajući zahtjev programa.

Nakon završetka svih prijava, datoteku je potrebno učitati na poslužitelj.

O drugim načinima postavljanja lozinki za stranicu

Postavljanje prilagođenih stranica s pogreškama

Možete postaviti vlastitu stranicu s pogreškom na sljedeći način: ErrorDocument 404 http://www.site.ru/404.php IE ignorira stranice manje od 512 bajtova.

Indeksiranje direktorija i poddirektorija

Kako biste izbjegli indeksiranje direktorija i poddirektorija od strane tražilica, trebate napisati sljedeći redak, na primjer: DirectoryIndex index.php Ova direktiva specificira datoteku koja će biti pozvana kada se pristupa direktoriju bez navođenja naziva datoteke.

Možete navesti više indeksnih stranica. Prilikom traženja imenika, oni će se pretraživati ​​redoslijedom kojim su navedeni u Direktivi DirectoryIndex. Ako datoteka index.html nije pronađena, tražit će datoteku index.php i tako dalje.

DirectoryIndex index.html index.php index.shtml

Osobno preferiram preusmjeravanje iz praznih direktorija ili na glavnu stranicu stranice ili na neku drugu prikladnu stranicu. Na primjer, imenik www.site.ru/pic/ može se preusmjeriti na www.site.ru.

Zaštita slika od preuzimanja

Često se događa da webmasteri bezobrazno kopiraju sadržaj s vaše stranice zajedno sa slikama, a slike se učitavaju s vašeg poslužitelja. To stvara dodatni promet, što često dovodi do brojnih problema. Kako se zaštititi od takvih webmastera i ne spriječiti robote za pretraživanje da indeksiraju slike? Jednostavno je: RewriteEngine na RewriteCond %(HTTP_REFERER) . RewriteCond %(HTTP_REFERER) !^http://([^.]+\.)?site\. RewriteCond %(HTTP_REFERER) !google\. RewriteCond %(HTTP_REFERER) !search\?q=cache RewriteCond %(HTTP_REFERER) !msn\. RewriteCond %(HTTP_REFERER) !yahoo\. RewriteCond %(REQUEST_URI) !^/hotlinker\.gif$ RewriteRule \.(gif|jpg|png)$ /hotlinker.gif hotlinker.gif - slika koja će se prikazati umjesto pravih slika. Preporučujem da na ovoj slici prikažete svoj logotip i poveznicu na svoju stranicu.

Još jedna opcija za sprječavanje pristupa slikama s neovlaštenih stranica:

SetEnvIfNoCase preporuka "^$" local_ref=1 SetEnvIfNoCase preporuka "^http://(www\.)?htmlweb\.ru" local_ref=1 SetEnvIfNoCase preporuka "^http://(www\.)?images\.yandex\ .ru" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?hghltd\.yandex\.com" local_ref=1 Narudžba Dopusti, Zabrani Dopusti iz env=local_ref

Tražilice i sve vrste alata za indeksiranje stvaraju ogroman promet na vašoj web stranici. Blok koda u nastavku omogućit će vam da spriječite botove da pristupe stranici.

RewriteCond %(HTTP_USER_AGENT) (Googlebot|Slurp|spider|Twiceler|heritrix| Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer| MJ12bot|ZyBorg/1|Ask\ Jeeves|AskJeeves|ActiveTouristBot| JemmaTheTourist| agadine3| BecomeBot|Clustered-Search-Bot|MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client|MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|Asterias\ Crawler|T-H-U-N-D-E-R-S-T-O-N-E|GeorgeTheTourist Bo t|VoilaBot|Vagabondo|fantomBro wser| stealthBrowser |cloakBrowser| fantomCrew\ Preglednik|Girafabot|Indy\ Library|Intelliseek|Zealbot| Windows\ 95|^Mozilla/4\.05\ \$|^Mozilla/4\.0$) RewriteRule ^(.*)$ - [ F] # RewriteCond %(HTTP_USER_AGENT) ^Mozilla.* RewriteCond %(HTTP_USER_AGENT) ^Opera.* RewriteCond %(HTTP_USER_AGENT) ^Firefox.* RewriteCond %(HTTP_USER_AGENT) ^Netscape.* RewriteRule ^(.*)$ - [L ] RewriteRule ^(.*)$ - [F]

Praćenje pogodaka datoteke robots.txt

Kako biste imali više informacija o posjetima tražilicama, korisno je imati detaljne informacije o pristupu datoteci robots.txt. Kako biste to organizirali, sljedeći unosi trebaju biti u ".htaccess": RewriteEngine na Options +FollowSymlinks RewriteBase / RewriteRule ^robots.txt$ / robot.php?%(REQUEST_URI) Sada, kada zatraži datoteku "robots.txt", naše RewriteRule će preusmjeriti posjetitelja (robota) na skriptu robot.php koja obrađuje zahtjeve. Osim toga, varijabla se prosljeđuje skripti koja će biti obrađena prema vašim potrebama. "REQUEST_URI" navodi naziv tražene datoteke. U ovom primjeru, ovo je "robots.txt". Skripta će pročitati sadržaj "robots.txt" i poslati ga web pregledniku ili robotu tražilice. Dakle, možemo brojati posjete posjetitelja i čuvati log datoteke.

PHPSESSID

Da biste onemogućili dodavanje PHPSESSID-a u URL, umetnite na početak index.php:

Ini_set("session.use_trans_sid", 0);

Ili napišite u .htaccess:

php_flag session.use_trans_sid Isključeno

Ako vam se sve ovo učinilo kompliciranim, koristite gotovu uslugu za pretvaranje dinamičkih URL-ova u statičke pomoću htaccessa

Direktive za predmemoriju

Predmemoriranje za sve vrste datoteka prema vremenu pristupa ExpiresActive on ExpiresDefault "pristup plus 600 sekundi" Predmemoriranje za sve vrste datoteka prema vremenu izmjene ExpiresActive on ExpiresDefault "modification plus 600 seconds" Predmemoriranje za određene vrste datoteka ExpiresByType text/css "modification plus 600 seconds" ExpiresByType image/jpeg "modifikacija plus 600 sekundi" ExpiresByType slika/gif "modifikacija plus 600 sekundi" ExpiresByType slika/x-ico "modifikacija plus 600 sekundi" ExpiresByType slika/png "modifikacija plus 600 sekundi"

Onemogućavanje predmemoriranja s Apache poslužiteljem

Otvorite konfiguracijsku datoteku Apache poslužitelja httpd.conf i odkomentirajte sljedeće retke:

LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

Unesite sljedeće u .htaccess:

# Onemogući predmemoriranje u ovoj mapi # Moduli moraju biti omogućeni # mod_headers.c i mod_expires.c # # Cache-Control zaglavlje Dodavanje zaglavlja Cache-Control "no-store, no-cache, must-revalidate"# Istječe zaglavlje ExpiresActive On ExpiresDefault "sad"

Potrebna zaglavlja automatski će se prenijeti i nema potrebe da ih posebno pišete u PHP-u - predmemorija je već onemogućena!

Opis http zaglavlja kontrole predmemorije

Predmemoriranje s .htaccess datotekom

# Omogući predmemoriju u ovoj mapi # Moduli moraju biti omogućeni # mod_headers.c i mod_expires.c # ExpiresActive #ExpiresDefault "pristup plus 1 sat" #ExpiresDefault "pristup plus 10 godina" ExpiresDefault "pristup plus 1 mjesec" ExpiresByType text/cache-manifest "pristup plus 0 sekundi" ExpiresByType text/html "pristup plus 0 sekundi" ExpiresByType text/ xml "pristup plus 0 sekundi" ExpiresByType aplikacija/xml "pristup plus 0 sekundi" ExpiresByType aplikacija/json "pristup plus 0 sekundi" ExpiresByType aplikacija/rss+xml "pristup plus 1 mjesec" ExpiresByType slika/x-ikona "pristup plus 1 tjedan " ExpiresByType image/gif "pristup plus 1 godina" ExpiresByType image/png "pristup plus 1 godina" ExpiresByType image/jpg "pristup plus 1 godina" ExpiresByType image/jpeg "pristup plus 1 godina" ExpiresByType video/ogg "pristup plus 1 godina " ExpiresByType audio/ogg "pristup plus 1 godina" ExpiresByType audio/mp3 "pristup plus 1 godina" ExpiresByType video/mp4 "pristup plus 1 godina" ExpiresByType video/webm "pristup plus 1 godina" ExpiresByType text/x-component "pristup plus 1 mjesec" ExpiresByType font/truetype "pristup plus 1 godina" ExpiresByType font/opentype "pristup plus 1 godina" ExpiresByType application/x-font-woff "pristup plus 1 godina" ExpiresByType image/svg+xml "pristup plus 1 mjesec" ExpiresByType application/vnd.ms-fontobject "pristup plus 1 godina" ExpiresByType text/css "pristup plus 2 mjeseca" ExpiresByType application/javascript "pristup plus 2 mjeseca" ExpiresByType text/javascript "pristup plus 2 mjeseca" Dodavanje zaglavlja Cache-Control "javno"

Predmemoriranje javascript datoteka s .htaccess datotekom

ExpiresDefault "pristup plus 3 dana"

Budite oprezni prilikom predmemoriranja prilikom promjene datoteke, korisnik može dobiti novu verziju tek nakon 3 dana!

Kako natjerati html stranice da obrađuju php kod?

Napišite sljedeće retke u svoju .htaccess datoteku: RemoveHandler .php .htm .html AddHandler application/x-httpd-php .php .htm .html

Kako ugostiti više stranica na jednom dijeljenom hostingu?

Za postavljanje dvije ili više stranica na jedan virtualni hosting, suprotno broju domena koje vam je dodijelio tarifni plan, morate napisati sljedeće retke u datoteku ".htaccess":

RewriteEngine On RewriteRule ^newdirectory/ - [L] RewriteCond %(HTTP_HOST) (www.)?newdomain.ru RewriteRule (.*) newdirectory/$1 [L]

Gdje:
newdirectory/ - mapa u kojoj će se nalaziti druga stranica
newdomain.ru - domena za koju vršimo preusmjeravanje

Imajte na umu da ćete u ovom slučaju imati jedan račun e-pošte. Oni. ako imate kutiju [e-mail zaštićen], zatim nakon povezivanja domene newdomain.ru, poštanski sandučić [e-mail zaštićen] pojavljuje se drugo ime [e-mail zaštićen] A kada kreirate bilo koji novi poštanski sandučić (na primjer, info), dva imena mu se automatski dodjeljuju - [e-mail zaštićen] I [e-mail zaštićen]

Traženje stranica u više od jednog imenika

Ponekad je potrebno pustiti web poslužitelj da traži stranice u više od jednog direktorija.

RewriteEngine na # prvo ga pokušajte pronaći na navedenoj lokaciji/... # ...i ako ga pronađete, završite pretraživanje: RewriteCond /your/docroot/dir1/%(REQUEST_FILENAME) -f RewriteRule ^(.+) /your / docroot/dir1/$1 [L] # sekunda - pokušajte je pronaći u pub/... # ...i ako je nađete, završite pretragu: RewriteCond /your/docroot/dir2/%(REQUEST_FILENAME) -f RewriteRule ^ ( .+) /your/docroot/dir2/$1 [L] # inače nastavi za druge direktive RewriteRule ^(.+) -

Korisnički virtualni hostovi

Ako želite pružiti www.subdomain.domain.ru adrese za korisničke stranice, možete upotrijebiti sljedeći skup pravila za pretvaranje http://www.subdomain.domain.ru/path u interni put /home/subdomain/path :

RewriteEngine na RewriteCond %(HTTP_HOST) ^www\.[^.]+\.ru$ RewriteRule ^(.+) %(HTTP_HOST)$1 [C] RewriteRule ^www\.([^.]+)\.ru( .*) /home/$1$2

Datoteke se oštećuju tijekom učitavanja na poslužitelj

Ako su prilikom prijenosa datoteka putem obrazaca (s navedenim enctype="multipart/form-data") binarni podaci oštećeni, napišite direktivu u /cgi-bin/.htaccess: CharsetRecodeMultipartForms Off.

Pogreška pri učitavanju SWF datoteka.
Pogreške prilikom pristupa stranicama koje sadrže ključne riječi,
tipa $_REQUEST

To može biti zbog instaliranog modula. u Apaču. Prema zadanim postavkama blokira retke sa SQL argumentima i drugim potencijalno opasnim naredbama u upitima.

Moguće poruke pogreške:

Zabranjeno

Nemate dopuštenje za pristup /adm/index.php na ovom poslužitelju. Osim toga, naišla je na pogrešku 404 Nije pronađeno dok smo pokušavali koristiti ErrorDocument za obradu zahtjeva.

Zahtjev nije siguran i odbijen je.

Dodaj u .htaccess SecFilterEngine isključen SecFilterScanPOST isključen Za poruku:

"POST /wp-admin/async-upload.php HTTP/1.1" 406 354 "-" "Shockwave Flash"

Zaštitu možete ukloniti samo za učitavanje datoteka na poslužitelj: SecFilterEngine isključen SecFilterScanPOST isključen

Optimalno je ukloniti zaštitu samo iz mape u kojoj je potrebna, bez uklanjanja zaštite s cijelog mjesta.

Varijable poslužitelja

To su varijable oblika %(NAME_OF_VARIABLE)

Gdje NAZIV_VARIJABLE može biti niz preuzet sa sljedećeg popisa:

Ove varijable točno odgovaraju HTTP MIME zaglavljima sličnog naziva i varijablama poslužitelja Apache ili poljima struct tm na Unix sustavima. Oni koji su posebni za mod_rewrite uključuju:

IS_SUBREQ- Sadržavat će tekst "true" ako se zahtjev trenutno izvršava kao podzahtjev, "false" inače. Podzahtjeve mogu generirati moduli koji trebaju raditi s dodatnim datotekama ili URI-jima kako bi izvršili vlastite zadatke.

API_VERSION- Ovo je verzija API-ja modula Apache (interno sučelje između poslužitelja i modula) u trenutnoj verziji poslužitelja, kako je definirano u include/ap_mmn.h. API verzija modula odgovara verziji Apachea koja se koristi (za Apache verziju 1.3.14, na primjer, to je 19990320:10), ali to je uglavnom od interesa za autore modula.

ZAHTJEV- Cijeli niz HTTP zahtjeva koji preglednik šalje poslužitelju (tj. " GET /index.html HTTP/1.1 "). Ne uključuje nikakva dodatna zaglavlja koja šalje preglednik.

REQUEST_URI- Resurs zatražen u nizu HTTP zahtjeva.

REQUEST_FILENAME- Puna staza u datotečnom sustavu poslužitelja do datoteke ili skripte koja odgovara ovom zahtjevu.

Bilješke:

  1. Varijable SCRIPT_FILENAME i REQUEST_FILENAME sadrže istu vrijednost, tj. vrijednost polja naziva datoteke Apacheove interne strukture request_rec. Prvo ime je samo dobro poznato ime CGI varijable, dok je drugo trajna kopija REQUEST_URI (sadrži vrijednost uri polja strukture request_rec).
  2. Postoji poseban format: %(ENV:varijabla) gdje varijabla može biti bilo koja varijabla okruženja. Ovo se traži interno u Apacheu i (ako ne tamo) pozivanjem getenv() iz procesa Apache poslužitelja.
  3. Postoji poseban format: %(HTTP:zaglavlje) gdje Zaglavlje može biti bilo koji naziv HTTP MIME zaglavlja. Ovo se traži u HTTP zahtjevu. Primjer: %(HTTP:Proxy-Connection) HTTP vrijednost zaglavlja " Proxy-Connection: ".
  4. Postoji poseban format %(LA-U:varijabla) za zahtjeve za traženje unaprijed koji se postavljaju putem unutarnjeg (temeljenog na URL-u) podzahtjeva za određivanje konačne vrijednosti varijabla. Koristite ovo kada želite koristiti varijablu za transformacije koja je zapravo definirana kasnije u nekoj fazi API-ja, te stoga nije dostupna u toj fazi. Na primjer, kada želite pretvoriti prema varijabli REMOTE_USER iz konteksta poslužitelja (httpd.conf datoteka), trebali biste koristiti %(LA-U:REMOTE_USER) jer je ova varijabla postavljena u fazama autorizacije koje idu nakon faza prijevoda URL-a u kojoj radi mod_rewrite. S druge strane, zbog implementacije mod_rewrite u kontekstu direktorija (.htaccess datoteka) putem Fixup faze API-ja, i budući da faze autorizacije dolaze prije ove faze, tamo možete jednostavno koristiti %(REMOTE_USER).
  5. Postoji poseban format: %(LA-F:varijabla) koji stvara interni podupit (temeljen na nazivu datoteke) za određivanje konačne vrijednosti varijabla. Ovo je u osnovi isto kao gornji LA-U format.

Glavna stranica bez dupliranja

Obično se kod glavne stranice fizički nalazi u datoteci index.html ili index.php, no stranica bi se trebala otvoriti na bilo koji od zahtjeva: yoursite.ru, yoursite.ru/index.html, www.yoursite.ru i www .yoursite.ru/index .html Ali za tražilice, to su četiri različita URL-a! Ako ne postavite ispravno .htaccess, tražilica će dodati četiri identične stranice u svoj indeks. Ovo je znak loše stranice. Ovaj problem možete izbjeći sa sljedećim kodom u .htaccess:

Opcije +FollowSymLinks RewriteEngine na RewriteCond %(HTTP_HOST) ^yoursite.ru RewriteRule (.*) http://www.yoursite.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://www.yoursite.ru/

Sve duplicirane stranice bit će zalijepljene preusmjeravanjem s kodom na glavnu stranicu - http://www.yoursite.ru/.

Dvostruke stranice bez kose crte na kraju URL-a

Kako biste spriječili indeksiranje stranica www.yoursite.ru/about i www.yoursite.ru/about/ kao različitih, stavite sljedeći kod:

Stranice bez kose crte bit će preusmjerene na "kosu crtu".

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ /$1/

Spremanje (učitavanje) datoteka umjesto otvaranja

Mnogi su vidjeli kako, kada pokušavaju preuzeti arhivu s nastavkom .rar, preglednik je otvara kao običan tekst iz gomile simbola. To znači da poslužitelj stranice nije konfiguriran za prisilno spremanje vrsta datoteka koje se ne bi trebale otvarati u pregledniku.

AddType aplikacija/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

Komprimirane stranice su poslane

SetOutputFilter DEFLATE Header deset ETag FileETag None

Prisilna kosa crta na kraju

Sljedeći kod će uvijek dodati kosu crtu na URL vaše web stranice, što puno pomaže u SEO području web stranice.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

Upotreba fontova za FireFox među domenama

Kada koristite ugrađene fontove, Firefox vam ne dopušta njihovo preuzimanje s vanjskih stranica. Sljedeći kod za .htaccess datoteku će zaobići ovo ograničenje.

#Zamijenite svojudomenu.com s URL-om svog bloga Set zaglavlja Access-Control-Allow-Origin "http://vašadomena.com"

Izvršite PHP u JavaScript datotekama

Kada razvijate JavaScript kod, ponekad morate koristiti PHP u .js datotekama, na primjer da biste dobili podatke iz baze podataka.

AddType aplikacija/x-httpd-php .js AddHandler x-httpd-php5 .js Aplikacija SetHandler/x-httpd-php

Rastaviti datoteke robots.txt, sitemap.xml itd. u mape domene

# Ako postoji tražena datoteka iz korijena stranice, u mapi domene, preusmjerite je tamo RewriteCond %(DOCUMENT_ROOT)/domain/%(HTTP_HOST)/root%(REQUEST_URI) -f RewriteRule ^(.*)$ /domain /%(HTTP_HOST )/root/$1[L]

Blokiranje korisničkih agenata putem .htaccess

Ako ste suočeni s problemom da neke vrste korisničkih agenata opterećuju vaš poslužitelj nepotrebnim zahtjevima, tada ih se možete riješiti dodavanjem sljedećih redaka u .htaccess:

SetEnvIfNoCase korisnički agent "^Black Hole" bad_bot SetEnvIfNoCase korisnički agent "^Titan" bad_bot SetEnvIfNoCase korisnički agent "^WebStripper" bad_bot SetEnvIfNoCase korisnički agent "^NetMechanic" bad_bot SetEnvIfNoCase korisnički agent "^CherryPicker" bad_bot SetEn vIfNoCase korisnički agent "^EmailCollector" bad_bot SetEnvIfNoCase korisnički agent "^EmailSiphon" bad_bot SetEnvIfNoCase korisnički agent "^WebBandit" bad_bot SetEnvIfNoCase korisnički agent "^EmailWolf" bad_bot SetEnvIfNoCase korisnički agent "^ExtractorPro" bad_bot SetEnvIfNoCase korisnički agent " ^CopyRightCheck" bad_bot SetEnvIfNoCase korisnički agent "^Crescent" bad_bot SetEnvIfNoCase korisnički agent "^Wget" bad_bot SetEnvIfNoCase korisnički agent "^SiteSnagger" bad_bot SetEnvIfNoCase korisnički agent "^ProWebWalker" bad_bot SetEnvIfNoCase korisnički agent "^CheeseBot" bad_bot SetEnvI fNoCase korisnički agent " ^Teleport" bad_bot SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot SetEnvIfNoCase User-Agent "^Telesoft" bad_bot SetEnvIfNoCase User-Agent "^Website Quester" bad_bot SetEnvIfNoCase User-Agent "^WebZip" bad _bot SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot SetEnvIfNoCase User-Agent "^WebSauger" bad_bot SetEnvIfNoCase User-Agent "^WebCopier" bad_bot SetEnvIfNoCase User-Agent "^NetAnts" bad _bot SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot SetEnvIfNoCase User-Agent "^WebAuto" bad_bot SetEnvIfNoCase User-Agent "^TheNomad" bad_bot SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot SetEnvIfNoCase User-Agent "^RMA" bad_bot SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot SetEnvIfNoCase User-Agent "^asterias" bad_bot SetEnvIfNoCase User-Agent "^httplib" bad_bot SetEnvIfNoCase User-Agent "^turingos" bad_bot SetEnvIfNoCase User-Agent "^spanner" bad_bot SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot SetEnvIfNoCase korisnički agent "^Harvest/1.5" bad_bot SetEnvIfNoCase korisnički agent "^Bullseye/1.0" bad_bot SetEnvIfNoCase korisnički agent "^Mozilla/4.0 (kompatibilan; Bullseye; Windows 95)" bad_bot SetEnvIfNoCase korisnički agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot SetEnvIfNoCase korisnički agent "^CherryPickerSE/1.0" bad_bot SetEnvIfNoCase korisnički agent "^CherryPicker /1.0" bad_bot SetEnvIfNoCase korisnički agent "^ WebBandit/3.50" bad_bot SetEnvIfNoCase korisnički agent "^NICErsPRO" bad_bot SetEnvIfNoCase korisnički agent "^Microsoft URL Control - 5.01.4511" bad_bot SetEnvIfNoCase korisnički agent "^DittoSpyder" bad_bot SetEnvIfNoCase korisnički agent "^Foobot" bad_bot SetEnv Korisnik IfNoCase- Agent "^WebmasterWorldForumBot" bad_bot SetEnvIfNoCase korisnički agent "^SpankBot" bad_bot SetEnvIfNoCase korisnički agent "^BotALot" bad_bot SetEnvIfNoCase korisnički agent "^lwp-trivial/1. 34" bad_bot SetEnvIfNoCase korisnički agent "^lwp-trivial" bad_bot SetEnvIfNoCase korisnički agent "^Wget/1.6" bad_bot SetEnvIfNoCase korisnički agent "^BunnySlippers" bad_bot SetEnvIfNoCase korisnički agent "^Microsoft URL Control - 6.00.8169" bad_bot SetEn vIfNoCase User-Agent "^URLy Warning" bad_bot SetEnvIfNoCase User-Agent "^Wget/1.5.3" bad_bot SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot SetEnvIfNoCase User-Agent "^cosmos" bad_bot SetEnvIfNoCase User-Agent "^moget" bad_bot SetEnvIfNoCase User-Agent "^hloader" bad_bot SetEnvIfNoCase User-Agent "^humanlinks" bad_bot SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot SetEnvIfNoCase User-Agent "^Mata Hari" bad_bot SetEnvIfNoCase User-Agent "^LexiBot" bad_bot SetEnvIfNoCase korisnički agent "^Web Image Collector" bad_bot SetEnvIfNoCase korisnički agent "^The Intraformant" bad_bot SetEnvIfNoCase korisnički agent "^True_Robot/1.0" bad_bot SetEnvIfNoCase korisnički agent "^True_Robot" bad_bot SetEnvIfNoCase Korisnički agent "^BlowFish/1.0" bad_bot SetEnvIfNoCase korisnički agent "^JennyBot" bad_bot SetEnvIfNoCase korisnički agent "^MIIxpc/4.2" bad_bot SetEnvIfNoCase korisnički agent "^BuiltBotTough" bad_bot SetEnvIfNoCase korisnički agent "^ProPowerBot/2.14" bad_bot SetE nvIfNoCase Korisnik- Agent "^BackDoorBot/1.0" bad_bot SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot SetEnvIfNoCase User-Agent "^suzuran" bad_bot SetEnvIfNoCase korisnički agent "^VCI WebViewer VCI WebViewer Win32" bad_bot SetEnvIfNoCase User-Agent "^VCI" bad_bot SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot SetEnvIfNoCase User-Agent "^QueryN Metasearch" bad_bot SetEnvIfNoCase User-Agent "^Openfind data gathere" bad_bot SetEnvIfNoCase User-Agent "^Openfind" bad_bot SetEnvIfNoCase User-Agent "^Xenu's Link Sleuth 1.1c" bad_bot SetEnvIfNoCase User-Agent "^Xenu"s" bad_bot SetEnvIfNoCase User-Agent "^Zeus" bad_bot SetEnvIfNoCase User-Agent "^ RepoMonkey Bait & Tackle/v1.01" bad_bot SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot SetEnvIfNoCase User-Agent "^Webster Pro" bad_bot SetEnvIfNoCase User-Agent " ^EroCrawler" bad_bot SetEnvIfNoCase User-Agent "^LinkScan/8.1a Unix" bad_bot SetEnvIfNoCase User-Agent "^Keyword Density/0.9" bad_bot SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_ bot Order Allow,Deny Allow from all Deny from env=bad_bot

Preusmjeravanje prema jeziku

RewriteEngine na RewriteCond %(HTTP:Accept-Language) (ru) RewriteRule .* WHERE [L]

Zaštita slika od preuzimanja preko poveznica na drugim stranicama

Uključujući prijelaze bez REFERER-a, tj. kada je adresa navedena u retku preglednika.

RewriteEngine na RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ SEND_WHERE

RewriteEngine na RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ SEND_WHERE

Blokirajte korisnike s određenom preporukom

Ako ne želite da korisnici idu s određenih stranica na vaše, možete to onemogućiti.

RewriteEngine na RewriteCond %(HTTP_REFERER) bannedurl1.com RewriteCond %(HTTP_REFERER) bannedurl2.com RewriteRule .* - [F]

bannedurl1.com i bannedurl2.com primjeri su zabranjenih stranica.

Ograničenje veličine PHP datoteke za učitavanje, najveća veličina zahtjeva i maksimalno vrijeme izvršavanja skripte

Veličina učitane datoteke:

php_vrijednost upload_max_filesize 15M

Maksimalna veličina zahtjeva za učitavanje u PHP-u:

php_vrijednost post_max_size 10M

Vrijeme izvršenja skripte:

php_vrijednost maksimalno_vrijeme_izvršenja 240

Vrijeme je potrebno da skripta analizira unesene podatke:

php_vrijednost max_input_time 180

Navedite izlazni način za IE

Postavljanje X-UA-kompatibilnog zaglavlja:

Skup zaglavlja X-UA-kompatibilan "IE=Edge"

Postavka Vary: Accept-Encoding

Za optimizaciju tražilice i smanjenje vremena učitavanja stranice, Google preporučuje postavljanje zaglavlja Vary: Accept-Encoding

Zaglavlje odgovora HTTP/1.1 Vary omogućuje poslužitelju da naznači da se predmemorirani resurs može koristiti samo bez provjere valjanosti ako zaglavlja navedena u Vary odgovaraju zaglavljima zahtjeva. Vrijednosti: Accept-Encoding, Host, User-Agent, Accept-Language.

Dodavanje zaglavlja Vary: Accept-Encoding

Zajednička slikovna datoteka za sve domene (globalni aliasi)

Alias ​​​​/javascripts /usr/share/javascript/ Opcije FollowSymLinksMultiViews Stavite uobičajenu datoteku poput icon.png u direktorij /usr/share/javascript/ u datoteku /etc/javascript-common/javascript-common.conf i dodajte redak: Alias ​​/apple-touch-icon-precomposed.png / usr/share/javascript/icon.png

Prilikom preuzimanja .doc, .docx datoteke otvaraju se u pregledniku s nerazumljivim kodiranjem

Ako otvorite .doc, .docx datoteke u pregledniku s nerazumljivim kodiranjem i želite da datoteka bude spremljena i da se ne otvara na lijevu tipku miša, tada trebate napisati u .htaccess:

AddType aplikacija/force-download doc AddType aplikacija/force-download docx AddType aplikacija/force-download xls AddType aplikacija/force-download xlsx

Preusmjeri na sigurnu https vezu

Ako koristite https i želite da svi korisnici budu preusmjereni na njega, onda će vam sljedeći kod pomoći:

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Pristup ako je kolačić postavljen pomoću htaccess

Ako je vaša prijava na stranici administratora i postavljena je u kolačiću pod nazivom prijava, možete jednostavno blokirati pristup bilo kojem imeniku za osobe izvana. Da biste to učinili, kreirajte .htaccess datoteku u ovom direktoriju (mapi) sa sljedećim sadržajem:

RewriteEngine On RewriteCond %(HTTP_COOKIE) !login=admin RewriteRule .* http://%(HTTP_HOST)/

Po istom principu možete zatvoriti stranicu radi održavanja za sve osim za admina.

Pristup zaglavljima "If-Modified-Since" i "If-None-Match" za implementaciju http 304 odgovora

Ako PHP nije instaliran kao Apache modul, tada za pristup zaglavljima "If-Modified-Since" i "If-None-Match" trebate smjestiti sljedeću .htaccess datoteku u korijenski direktorij web stranice:

RewriteEngine On RewriteRule .* - RewriteRule .* -

Nakon toga, potrebna zaglavlja bit će dostupna kao $_SERVER["HTTP_IF_MODIFIED_SINCE"] i $_SERVER["HTTP_IF_NONE_MATCH"].

Treba imati na umu da preglednik ne šalje zaglavlja "If-Modified-Since" i "If-None-Match" ako u prethodnim zahtjevima ovoj stranici nije primio zaglavlje "Last-Modified" u odgovoru web poslužitelj. Osim toga, kada koristite sesije sa zadanim postavkama u web aplikaciji, preglednik također neće slati navedena zaglavlja. Kako bi se izbjeglo takvo ponašanje preglednika, potrebno je prije pokretanja sesije izvršiti funkciju session_cache_limiter, prosljeđujući parametar "private_no_expire" kao argument:

session_cache_limiter("privatno_no_expire"); početak_sesije();

Osim toga, dodatne informacije o temi mogu se pronaći:

www.egoroff.spb.ru - Primjeri preusmjeravanja
htaccess.net.ru - dodatne informacije o htaccess.

Datoteka .htaccess omogućuje vam postavljanje konfiguracije web stranice bez potrebe za mijenjanjem konfiguracijskih datoteka poslužitelja. Točka na početku naziva datoteke znači da je datoteka skrivena.

Datoteka .htaccess može se stvoriti u uređivaču teksta i zatim učitati na web mjesto pomoću ftp klijenta

Bilješka: Naziv datoteke .htaccess ne sadrži dodatne riječi ili ekstenzije.

Osim toga, mjesto takve datoteke također je od velike važnosti. Konfiguracije u ovoj datoteci utjecat će na cjelokupni sadržaj direktorija u kojem se sama datoteka nalazi, kao i na sve njegove poddirektorije.

Značajke datoteke.htaccess

Dok je .htaccess stranica nevjerojatno korisna i može napraviti veliku razliku za web mjesto, morate imati na umu dvije stvari kada je koristite.

Prvo je brzina. Stranica .htaccess može malo usporiti poslužitelj; u većini slučajeva je gotovo neprimjetan. To je zbog lokacije stranice: kao što je već spomenuto, datoteka .htaccess utječe na stranice i poddirektorije u svom direktoriju. Svaki put kada se stranica učita, poslužitelj provjerava njen direktorij, kao i svaki direktorij jednu razinu više, dok ne dođe do najvišeg direktorija ili .htaccess datoteke. Ovaj proces će se nastaviti sve dok postavka AllowOverride dopušta korištenje .htaccess datoteka, bez obzira na to postoje li takve datoteke na sustavu.

Drugo je sigurnost.. Datoteci .htaccess mnogo je lakše pristupiti nego običnoj Apache konfiguracijskoj datoteci, a promjene u njoj bit će odmah aktivirane, bez potrebe za ponovnim pokretanjem poslužitelja. Stoga korisnici koji imaju pravo mijenjati datoteku .htaccess mogu ozbiljno utjecati na sam poslužitelj. Svaka direktiva napravljena u .htaccess ima isti učinak kao direktiva napravljena izravno u Apache konfiguraciji.

Kako uključiti datoteku.htaccess?

Uz pristup postavkama poslužitelja, možete uređivati ​​Apache konfiguracije kako biste omogućili .htaccess datotekama da nadjačaju zadane konfiguracije stranice. Otvorite zadanu konfiguracijsku datoteku hosta apache2.

Bilješka: Trebat će vam sudo privilegije u ovom trenutku.

sudo nano /etc/apache2/sites-available/default

Dok je datoteka otvorena, pronađite sljedeći odjeljak i promijenite vrijednost direktive AllowOverride iz Ništa u Sve. Odjeljak bi trebao izgledati ovako:


Opcije Indeksi FollowSymLinks MultiViews
DopustiNadjačaj sve
nalog dopustiti, odbiti
dopustiti od svih

Spremite i zatvorite datoteku i zatim ponovno pokrenite apache.

sudo service apache2 restart

Stvaranjedatoteka.htaccess

Kao što je već spomenuto, .htaccess datoteka može se stvoriti pomoću uređivača teksta, a zatim učitati na web mjesto putem ftp klijenta (u ovom slučaju, .htaccess naziv datoteke ne smije sadržavati dodatne riječi ili ekstenzije).

Ili možete stvoriti takvu datoteku pomoću terminala; da biste to učinili, upotrijebite sljedeću naredbu, zamjenjujući example.com s nazivom stranice.

sudo nano /var/www/example.com/.htaccess

Uobičajeni slučajevi upotrebe za .htaccess

1.Mod_Prepisati

Jedan od najkorisnijih aspekata datoteke. Prostor datoteke .htaccess može se koristiti za definiranje/promjenu načina na koji se URL-ovi i web stranice prikazuju na web mjestu. Detaljne informacije o tome kako se to radi možete pronaći na ovoj poveznici.

2. Autentifikacija

Iako datoteka .htaccess ne zahtijeva toliko prava kao standardna konfiguracijska datoteka apache2.conf, još uvijek se može koristiti za učinkovite promjene sigurnosti web-mjesta. Činjenica je da vam .htaccess omogućuje traženje lozinke za pristup određenim dijelovima web stranice. .htaccess lozinke pohranjene su u datoteci pod nazivom .htpasswd.

Bilješka: Iz sigurnosnih razloga, pohranjivanje takve datoteke u imenik web stranice strogo se ne preporučuje.

U datoteci .htpasswd potrebno je navesti imena i lozinke svih korisnika kojima je dopušten pristup sigurnom dijelu stranice.

Korisnička imena i lozinke unose se u datoteku kao par user_name:encrypted_password. Na primjer, ako korisnik pod imenom best_user ima lozinku awesome, tada bi takav par mogao biti "best_user:VtweQU73iyETM".

Bilješka: svaki par se upisuje u poseban red. Datoteka .htpasswd može sadržavati onoliko redaka koliko je potrebno.

Nakon stvaranja .htpasswd, dodajte sljedeći kod u .htaccess kako biste omogućili značajku provjere autentičnosti:

AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName Unesite lozinku
AuthType Basic
Zahtijeva valjanog korisnika

Crta AuthUserFile navodi stazu do datoteke .htpasswd.

Crta AuthGroupFile specificira mjesto .htgroup. Budući da trenutno ne postoji takva datoteka, ostavite vrijednost /dev/null.

Crta AuthName sadrži tekst koji će biti prikazan u upitu za lozinku (možete unijeti apsolutno bilo koji tekst).

AuthType odnosi se na vrstu provjere autentičnosti koja će se koristiti za provjeru lozinki. Lozinke se provjeravaju putem HTTP-a, ključna riječ Basic se ne može mijenjati.

Crta Zahtijevativrijedi-korisnik govori .htaccess datoteci da više ljudi treba imati pristup lozinkom zaštićenim dijelovima stranice. Ako trebate navesti određenu osobu koja ima pristup zatvorenim dijelovima stranice, umjesto niza Zahtijeva valjanog korisnika koristi se niz Zahtijevaj korisnika. Korisničko ime.

3. Prilagođene stranice s pogreškama

Datoteka .htaccess omogućuje vam stvaranje prilagođenih stranica s pogreškama za vaše web mjesto. Neke od najčešćih pogrešaka su:

  • 400 Loš zahtjev
  • 401 Potrebna autorizacija
  • 403 Zabranjena stranica
  • 404 Datoteka nije pronađena
  • 500 Interna pogreška

Prilagođene stranice s pogreškama stvorene su u svrhu da stranice web-mjesta budu prilagođenije korisniku i da posjetitelju web-mjesta pruže detaljnije informacije od zadanih stranica s pogreškama poslužitelja.

Na primjer, možete stvoriti stranicu 404 (pokušajte stvoriti bilo koju stranicu s greškom po svom izboru).

Nakon izrade i učitavanja stranice s pogreškom, navedite njezinu lokaciju u datoteci .htaccess:

ErrorDocument 404 /new404.html

Zapamtiti: Apache traži stranicu 404 u korijenskom direktoriju stranice. Nakon postavljanja nove stranice s pogreškom 404 u poddirektorij, svakako dodajte taj poddirektorij u redak, ovako:

ErrorDocument 404 /error_pages/new404.html

4. MIME vrste

U slučajevima kada web mjesto ugošćuje neke aplikacijske datoteke za koje poslužitelj nije konfiguriran za prikaz, možete dodati MIME vrste za Apache poslužitelj u .htaccess datoteku pomoću sljedećeg koda:

AddType audio/mp4a-latm .m4a

Obavezno zamijenite aplikaciju i ekstenziju datoteke MIME vrstom koju želite podržati.

5.SSI

Tehnologija Server Side Includes sjajno štedi vrijeme na web stranici. Jedna od najčešćih upotreba SSI-ja je ažuriranje velikog broja stranica koje sadrže određeni blok podataka bez potrebe za ažuriranjem svake stranice zasebno (na primjer, za promjenu citata na dnu stranice).

Da biste omogućili SSI, unesite sljedeći kod u .htaccess:

AddType text/html .shtml
AddHandler raščlanjen na poslužitelju .shtml

Ovi redovi govore .htaccessu da su .shtml datoteke važeće, a drugi red govori poslužitelju da provjeri sve datoteke koje završavaju na .shtml za SSI naredbe.

Međutim, ako postoji veliki broj .html stranica na poslužitelju kojima bi trebalo dosta vremena da promijene ekstenziju u .shtml, možete upotrijebiti drugu taktiku da ih provjerite za SSI naredbe. Za to se koristi parametar XBitHack.

Dodavanje ovog retka u datoteku .htaccess uzrokuje da Apache provjerava sve html datoteke s odgovarajućim dopuštenjima za Uključuje na strani poslužitelja.

Da biste dopustili stranici da koristi XBitHack, upišite:

chmod +x naziv_stranice.html

Rezultati

Ovaj vodič pokriva samo osnovne funkcije .htaccess stranice, koje ipak čine rad sa stranicom mnogo fleksibilnijim. Ako imate pitanja ili dodataka o mogućnostima .htaccess datoteke, ostavite komentar.

Oznake: ,