Ten záhadný súbor .htaccess. Ako povoliť zobrazovanie chýb PHP

  • 18.06.2019

htaccess - príklady nastavenia a použitia - 4,1 z 5 na základe 18 hlasov

Súbor htaccess vám umožňuje konfigurovať a prepísať nastavenia webového servera Apache a podobných serverov. Pomocou neho môžete nastaviť oprávnenia a parametre, aby server pracoval s určitými používateľmi hostingu a dokonca aj s jednotlivými priečinkami konkrétneho používateľa.

Najčastejšie sa používa na vytváranie presmerovaní 301 zo starých adries URL na nové, premapovanie typov súborov, riadený prístup k adresárom a ďalšie. Vďaka súboru htaccess nemusíte pristupovať k hlavnému konfiguračnému súboru a ovplyvňovať chod servera ako celku.

Čo je súbor htaccess a na čo sa používa

Ako už bolo spomenuté, htaccess sa používa na nastavenie niektorých možností pre Apache a ďalšie servery. Napriek veľkej a podivnej prípone sa prispôsobenie súboru .htaccess vykonáva otvorením a úpravou jeho obsahu pomocou ľubovoľného textového editora.

Súbor htaccess bol vynájdený špeciálne na to, aby umožnil každému používateľovi zmeniť konfiguráciu servera, čo má vplyv len na jeho vlastnú stránku a nie na celý server. Každý vie, že hlavné konfiguračné smernice Apache sú v súbore httpd.conf. Väčšina používateľov, a ak hovoríme o virtuálnom hostingu, tak všetci používatelia, však nemá možnosť prístupu k nemu a práva na jeho úpravu, pretože táto akcia sa bude týkať všetkých.

Súbor htaccess sa často označuje ako dynamický súbor. Je to preto, že server k nemu musí pristupovať vždy, keď potrebuje dotaz na adresár, ktorý obsahuje. Možno je to významná výhoda, pretože zmeny vykonané používateľom v súbore sa okamžite prejavia bez potreby reštartovania servera. Ak sa vykonajú zmeny v hlavnom konfiguračnom súbore, reštartovanie servera je nevyhnutným predpokladom, aby sa prejavili.

Samozrejme, nie všetko je také hladké, ako by sme chceli, pretože použitie htaccess mierne ovplyvňuje výkon servera, avšak v prípade uzavretého prístupu k hlavnému konfiguračnému súboru je táto metóda najjednoduchšou a najpohodlnejšou metódou na zmenu parametrov.

Niektoré funkcie používania htaccess:

1. Môže prepísať veľký počet príkazov v hlavnom súbore httpd.confg

2. Ak súbor htaccess umiestnite do koreňového adresára, rozšíri sa na celú stránku (výnimkou sú iba adresáre, v ktorých sa nachádza vlastný konfiguračný súbor, a adresáre umiestnené nižšie v stromovej štruktúre)

3. Súbor htaccess môžete umiestniť do ľubovoľného adresára a jeho smernice sa použijú na všetky podadresáre

4. Htaccess nie je používateľovi k dispozícii na zobrazenie z prehliadača, pretože patrí do kategórie „systém“.

S htaccess tak používateľ získa flexibilitu pri nastavovaní vlastného servera a môže použiť nasledujúce možnosti:

  • Jednoduché direktívy presmerovania (redirect);
  • Komplexné direktívy presmerovania (mod_rewrite);
  • Indexové stránky;
  • Chyba pri spracovaní;
  • definícia kódovania;
  • Správa prístupu k adresárom a súborom;
  • Ochrana adresára heslom;
  • Možnosti PHP.

Príklady najbežnejšieho použitia súboru htaccess

Teraz sa pozrieme na najbežnejšie pracovné možnosti používania htaccess na prispôsobenie stránky.

Skôr ako začneme, venujte pozornosť nasledujúcim bodom:

2. Aby ste mohli vytvoriť nový súbor s príponou htaccess, musíte si otvoriť poznámkový blok alebo iný textový editor, napísať kód, uložiť súbor s uvedením prípony .htaccess (bodka vpredu). Potom ho zostáva hodiť do adresára, pre ktorý bol určený.

3. Syntax.htaccess

Cesty k súborom (adresárom) sa zadávajú od koreňového adresára servera.

DirectoryIndex /home/st5155/www/data/home.html

Ak nakonfigurujete súbor htaccess umiestnený v koreňovom priečinku lokality, cesty sa zadajú z koreňového priečinka tohto priečinka.

DirectoryIndex /home.html

Domény sa zapisujú protokolom http:// alebo https://

Presmerovanie / http://your-sait.ru

Súbor má názov „bodka“ htaccess.

Na vytvorenie riadku s komentárom použite znak #.

Najpohodlnejšie je upraviť súbor pomocou editora AkelPad, ktorý je súčasťou Total Commanderu, stačí ho vybrať a stlačiť F4.

Jednoduché presmerovanie - Direktíva presmerovania

1. Presmerovanie na nové stránky lokality

Ak boli stránky na lokalite presunuté na nové adresy, používateľ alebo vyhľadávací robot, ktorý kontaktoval starú adresu, ich pravdepodobne neuvidí. Na prilepenie starých a nových adries stránok môžete použiť jednoduché presmerovanie 301. Aby ste to dosiahli, musíte do konfiguračného súboru htaccess zapísať nasledujúci kód:

Presmerovanie 301 /staraya.html http://vash-sait.ru/novaya.html

2. Prevedenie informačných kanálov do spoločného formátu

Predtým sa používali rôzne formáty feedov, ako napríklad: Atom, RSS, Rdf. Dnes je medzi nimi hlavným a najobľúbenejším RSS, takže je možné dbať na to, aby boli iné formáty presmerované na jeden. Toto tiež používa súbor htaccess a nasledujúci kód:

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://your-sait.ru/feed/

Komplexné presmerovanie - Direktíva RewriteRule

1. Presmerovanie domény z www na non-www.

Veľmi často musíte v htaccess použiť presmerovanie 301 na zlepenie domén s www a bez www. Predtým vyhľadávače považovali takéto adresy za úplne odlišné a pozerali sa na ne ako na odlišné stránky. Dnes je úloha lepenia pridelená vyhľadávaciemu robotovi, ale nikdy nebude zbytočné označovať správne zrkadlo. Navyše, oni sami nebudú mať žiadny zmätok.

Možnosti +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.vash-sait\.ru$ RewriteRule ^(.*)$ http://vash-sait.ru/$1

2. Presmerovanie návštevníkov na rôzne stránky v závislosti od IP adresy návštevníka.

V htaccess je možné určiť, na ktorú stránku bude používateľ s konkrétnou IP adresou presmerovaný. Napríklad presmerovanie návštevníkov s IP adresou 183.11.101.1 na stránku kontakt.html

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

3. Presmerovanie pri aktualizácii webového zdroja

Počas testovania alebo aktualizácie zdroja sa používateľ nebude môcť dostať na stránku. Bolo by však nesprávne neupozorniť ho na to. V .htaccess môžete napísať kód, ktorý presmeruje používateľa na informačnú stránku, ktorá popisuje podstatu problému (dôvody, načasovanie atď.).

RewriteEngine na RewriteCond %(REQUEST_URI) !/info.html$ RewriteCond %(REMOTE_HOST) !^14\.124\.354\.80 RewriteRule $ http://your-sait.ru/info.html

Kde 14.124.354.80 - nahraďte vašou IP adresou.

4. Ochrana horúcich odkazov

Nie je žiadnym tajomstvom, že dnes sa z webových stránok kradne čoraz viac informácií. Niekedy iba text a niekedy spolu s grafickými obrázkami. A zakaždým, keď návštevník príde na stránku tretej strany, tieto obrázky sa načítajú z vášho hostingu, čím sa vytvorí zaťaženie a spáli sa návštevnosť. Aby ste tomu zabránili, pridajte nasledujúci kód:

RewriteEngine On RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://([ -a-z0-9] \.)?your-sait\.ru RewriteRule \.(gif|jpe?g| png) $ -

Vo vyššie uvedenom príklade sa na stránke načítajúcej obrázok zobrazí chyba 403. Ak chcete, aby sa namiesto obrázka zobrazil konkrétny obrázok, nahraďte posledný riadok nasledujúcim:

RewriteRule \.(jpg|png|gif)$ http://your-sait.ru/images/imageinfo.jpg

5. Presmerujte na zabezpečené pripojenie https

V .htaccess môžete nakonfigurovať presmerovanie na zabezpečené https pripojenie tak, aby všetci používatelia pracovali iba cez tento protokol, čo zaručuje bezpečnosť a spoľahlivosť prenosu dát medzi serverom a klientom.

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

6. Automatické nahradenie lomky na konci adresy.

Veľmi bežné sú situácie, keď adresa URL končí názvom adresára: http://your-sait.ru/images/raznoe

Apache môže chybu opraviť sám a vykonať presmerovanie 301 pridaním chýbajúcej lomky do odkazu. Používateľ teda nepocíti žiadny rozdiel a ako odpoveď dostane požadovanú stránku. Dokončenie takejto akcie však bude trvať dvakrát dlhšie. Nasledujúci kód vždy pridá / na koniec adresy.

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

7. Blokovanie používateľov prichádzajúcich z konkrétneho webu

Ak vlastník stránky nechce, aby jeho zdroj navštevovali používatelia, ktorí sa prihlásili z konkrétnej domény a potrebujú zablokovať prístup, je pripravený pomôcť aj htaccess. Návštevnosť z určitých stránok môžete blokovať pomocou stránky 403 alebo „zamietnuť prístup“. Toto nastavenie je užitočné, keď sa na vašom webe objavia odkazy zo stránok so zakázaným obsahom a návštevnosť cez ne smeruje na váš web.

RewriteEngine na RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteRule .* - [F]

Indexové stránky - Direktíva DirectoryIndex

1. Zmena predvolene načítanej indexovej stránky

Zvyčajne sú predvolené indexové stránky index.htm, index.php alebo index.html, pri prístupe do adresára lokality sa tieto súbory okamžite prehľadávajú. V prípade potreby však môžete indexovú stránku predefinovať na akúkoľvek inú. Podobná úloha sa rieši aj pomocou súboru htaccess.

DirectoryIndex mojastranka.html

Je možné zadať dve alebo viac strán. Treba počítať s tým, že sa budú hľadať v poradí, v akom sú uvedené v konfiguračnom súbore za direktívou DirectoryIndex.

DirectoryIndex index.shtml index3.php index.html index.htm

Spracovanie chýb - Direktíva ErrorDocument

1. Vlastná chybová stránka

Napriek tomu, že mnohé stránky stále používajú štandardnú chybovú stránku 404, je nepravdepodobné, že uspokojí používateľa, ktorý nedosiahol očakávaný výsledok a namiesto toho vidí informácie, ktoré sú pre neho nezrozumiteľné. Je potrebné ponúknuť stránku, ktorá bude zodpovedať hlavnému štýlu, ktorý zobrazí podrobnejšie informácie o dôvodoch zlyhania požiadavky. Ak to chcete urobiť, môžete v htaccess určiť, ktorý súbor sa má načítať namiesto štandardnej stránky s chybou 404.

ErrorDocument 404 "/404.html"

2. Vytváranie vlastných chybových stránok

Pre tých, ktorí sú unavení z bežných stránok, ktoré zobrazujú popis chýb, ktoré sa vyskytli na webe, je tu možnosť použiť vlastné prázdne miesta. Stačí si sami vytvoriť niekoľko *.html súborov s potrebným obsahom a urobiť záznam do súboru htaccess.

ErrorDocument 401 /errors401.html ErrorDocument 403 /errors403.html ErrorDocument 404 /errors404.html ErrorDocument 500 /errors505.html

Aby ste vedeli, čo vložiť na každú z chybových stránok, stručne popíšeme ich význam.

  • 401 – Vyžaduje sa autorizácia
  • 403 – Používateľ nie je overený, prístup odmietnutý (zakázané)
  • 404 - Požadovaný dokument (súbor, adresár) sa nenašiel (nenájdený)
  • 500 – Interná chyba servera – Chyba skriptu alebo chyba syntaxe súboru .htaccess – (Interná chyba servera)

Definícia kódovania

1. Určenie kódovania, v ktorom server "dáva" súbory

Aby sa používateľovi nezobrazovali pre neho nezrozumiteľné znaky, z ktorých nie je možné prečítať slová, je potrebné zadať správne kódovanie. Aj keď tam nie je žiadny štítok< Мета http-equiv = "Content-Type">text na stránke bude vždy správny a v tomto opäť pomôže súbor htaccess.

AddDefaultCharset UTF-8

2. Určenie kódovania pre nahrávané súbory

Podobná situácia môže nastať, keď používateľ nahrá súbor na server a jeho obsah je možné prekódovať. Aby bolo možné použiť požadované kódovanie, htaccess musí obsahovať kód označujúci, že všetky nahrané súbory musia byť otvorené s kódovaním UTF-8.

CharsetSourceEnc UTF-8

Správa prístupu k adresárom a súborom

1. Zakázať prístup ku všetkým súborom

Najjednoduchší spôsob, ako zabrániť prezeraniu súboru, je nastaviť heslo, no nie vždy to stačí. V niektorých prípadoch by používateľ nemal mať práva na prezeranie akýchkoľvek súborov alebo adresárov (napríklad musíte uzamknúť systémové adresáre, ktorých zmeny môžu zvýšiť výkon servera). Súbor htaccess obsahuje časť kódu, ktorá zbavuje všetkých používateľských oprávnení.

2. Povoliť prístup z konkrétnej adresy IP

Webový server Apache je výkonný softvérový produkt bohatý na funkcie s množstvom funkcií. Tento článok sa bude zaoberať konfiguračnými technikami Apache, s ktorými sa najčastejšie stretávame pri vývoji webových stránok.

Ako viete, všetky nastavenia servera Apache sa nachádzajú v súbore httpd.conf, ktorý nie je vždy dostupný. Napríklad, ak sa na hostingu používa virtuálny server, keď jeden server Apache obsluhuje stovky stránok, potom, samozrejme, nemôžete dovoliť vlastníkovi jednej stránky zmeniť konfiguráciu servera, čo ovplyvní všetky ostatné stránky. Webový server Apache však umožňuje konfiguráciu jednotlivých adresárov pomocou súborov .htaccess. Tento článok sa zameria na prácu s týmito súbormi, ktoré sú jedinými konfiguračnými súbormi dostupnými pre väčšinu webových vývojárov.

Súbor .htaccess (s bodkou na začiatku názvu) je konfiguračný súbor, ktorý umožňuje konfigurovať server na úrovni jednotlivých adresárov: nastavovať prístupové práva k súborom v adresároch, meniť názvy indexových súborov, samostatne spracovávať HTTP kódy odpovedí, upravte adresy požadovaných stránok.

Poznámka
Súbor .htaccess je možné umiestniť do ľubovoľného adresára. Direktívy v tomto súbore ovplyvňujú všetky súbory v aktuálnom adresári a všetky jeho podadresáre (pokiaľ tieto direktívy nie sú prepísané direktívami súboru .htaccess v podadresároch).

Zmeny vykonané v súboroch .htaccess sa prejavia okamžite a nevyžadujú reštart servera, na rozdiel od zmien vykonaných v hlavnom konfiguračnom súbore httpd.conf.

Aby boli súbory .htaccess použiteľné, musí byť správne nastavený hlavný konfiguračný súbor httpd.conf, kde musia byť napísané direktívy, ktoré umožnia súboru .htaccess prepísať konfiguráciu webového servera v adresári. Zoznam týchto direktív je daný direktívou AllowOverride.

Direktíva AllowOverride môže obsahovať jednu z nasledujúcich direktív alebo ich kombináciu: AuthConfig, FileInfo, Indexes, Limit, Options, All, None

Ak chcete poskytnúť direktíve súboru .htaccess maximálne povolenie na zmenu direktív, hodnota direktívy AllowOverride v súbore httpd.conf musí byť nastavená na All. Je to predvolená hodnota.

AllowOverride All

Môžete zakázať predefinovanie akýchkoľvek direktív v konfiguračných súboroch .htaccess pomocou hodnoty None:

AllowOverride Žiadne

Komentujte
Názov konfiguračného súboru je možné zmeniť a napríklad sa môže volať nie .htaccess, ale access.conf. Direktíva AccessFileName v súbore httpd.conf je zodpovedná za názov tohto súboru. Zmena názvu konfiguračného súboru .htaccess sa neodporúča, pretože to môže skomplikovať ďalšiu údržbu servera.

Syntax.htaccess

Skôr než sa pozrieme na príklady, zamerajme sa na syntax direktív v súboroch .htaccess.

  • Cesty k súborom a adresárom musia byť špecifikované z koreňového adresára servera, napríklad /pub/articles/masters/php/
  • Pri zadávaní absolútnych adries URL musia byť špecifikované protokoly, napríklad: Redirect / http://www.site.ru
  • V súboroch .htaccess nie sú povolené medzery v cestách k súborom a v názvoch samotných súborov, pretože výsledkom je vygenerovanie kódu odpovede 500 - chyba konfigurácie servera: "Interná chyba servera".

Príklady .htaccess

Indexové stránky:

Môžu nastať situácie, kedy je potrebné zmeniť zloženie indexových súborov, napríklad ak potrebujete indexovú stránku index.php, ktorá však nie je zaregistrovaná v hlavnom konfiguračnom súbore httpd.conf. Túto úlohu je možné vyriešiť pomocou súboru .htaccess, v ktorom je potrebné vytvoriť direktívu DirectoryIndex, ktorá vypíše názvy indexových stránok:

DirectoryIndex index.php index.shtml index.html

Keď požadujete adresár bez zadania názvu súboru, najprv vyhľadá stránku s názvom index.php. Ak v adresári nie je žiadna stránka s týmto názvom, potom sa podobné operácie vykonajú so súborom index.shtml atď. na koniec zoznamu, kým nenájdete a neotvorí príslušnú stránku.

Zakážte zobrazovanie obsahu adresára bez indexového súboru

Často je žiaduce zabrániť zobrazeniu zoznamu súborov v adresári, ak nie je zadaný alebo chýba indexový súbor. Napríklad zabrániť zobrazovaniu obsahu adresára s obrázkami. Ak takýto zákaz nie je nastavený, potom používateľ, ktorý sa dostane priamo do takéhoto adresára, dostane zoznam všetkých obrázkov.

Možnosti - Indexy

Spracovanie kódov odozvy webového servera Apache

Žiadna stránka nie je odolná voči chybám. Najčastejšou chybou je sledovanie odkazu na neexistujúcu stránku. V tomto prípade Apache vygeneruje kód odpovede 404 a zobrazí automaticky vygenerovanú chybovú stránku. Prítomnosť neexistujúcich stránok vytvára zlý dojem na návštevníkov stránok. Tento dojem môže byť vyhladený, ak namiesto štandardných strán nahradíte svoje vlastné stránky chybovým hlásením. Direktíva ErrorDocument je zodpovedná za priradenie stránok, ktoré spracovávajú kódy odozvy HTTP.

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

Po direktíve ErrorDocument musíte zadať kód odpovede a stránku, na ktorú chcete presmerovať návštevníka, keď sa vyskytne tento kód odpovede.

  • Chyba 401 – požiadavka vyžaduje overenie používateľa (neoprávnené).
  • Chyba 403 - Prístup k požadovanému zdroju je zakázaný (zakázaný).
  • Chyba 404 – požadovaný dokument na serveri neexistuje (nenájdený).
  • 500 error - Chyba konfigurácie servera alebo externého programu (Internal Server Error).

Spustite kód PHP v súboroch HTML

PHP kód sa zvyčajne spúšťa v súboroch s príponami php. Niekedy nastanú situácie, keď je potrebné spustiť PHP kód v súboroch s inou príponou. V tomto prípade môžete prikázať webovému serveru, aby spustil PHP kód nielen v súboroch s príponou php, ale aj v súboroch s príponou html.

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

Prvý riadok odstraňuje obslužný program pre súbory html a htm a druhý riadok hovorí serveru, aby použil obslužný program PHP pre súbory htm a html.

Nastavenie kódovania súborov na serveri

Zadané kódovanie sa odošle prehliadaču v hlavičke Content-Type a umožní klientskemu prehliadaču automaticky prepnúť na požadované kódovanie.

AddDefaultCharsetWindows-1251

Nastavenie kódovania pre nahrávané súbory

Pri nahrávaní súborov na server môžete určiť, v akom kódovaní má server súbor očakávať.

CharsetSourceEnc windows-1251

Zakázanie smernice MultiViews

Možnosť MultiViews povolená na hostingu môže spôsobiť neočakávané problémy, napríklad zobrazenie neexistujúcich stránok webu. Predpokladajme, že na stránke je stránka s adresou http://www.sait.ru/down.php a ak návštevníci vstúpia do neexistujúceho adresára http://www.sait.ru/down/ , potom je povolená Možnosť MultiViews nahradí tento adresár za súbor down.php. Nahradenie však nebude dokončené úplne - cesty k obrázkom, šablóny štýlov atď. bude nesprávne nastavený. To znamená, že stránka sa zobrazí skreslene. Na potlačenie tohto správania Apache by mala byť vypnutá možnosť MultiViews.

Možnosti-MultiViews

Prístup k súboru zamietnutý

Ak chcete návštevníkom zabrániť v prístupe k súborom služieb z okna prehliadača, môžete prístup k takýmto súborom zablokovať. Na tento účel sa používajú direktíva Deny a povolenia prístupu.

Poznámka
Použitie direktív Deny a Allow riadi iba prístup k súborom z prehliadača alebo z iného klientskeho programu. Takéto zákazy sa nevzťahujú na serverové skripty.

Zablokujte prístup k súborom z prehliadača

Odmietnuť od všetkých

Pri použití takejto smernice bude zakázaný prístup z prehliadača ku všetkým súborom a adresárom aktuálneho adresára.

Zakázať prístup ku konkrétnemu súboru

Odmietnuť od všetkých

Tu je zakázaný prístup iba k súborom s názvom config.php.

Zákaz prístupu k súborom inc

Odmietnuť od všetkých

* je ľubovoľná postupnosť znakov s výnimkou znaku lomky (/).

Zakázať prístup k súborom s viacerými typmi prípon

Odmietnuť od všetkých

Prístup k súborom inc, conf a cfg je odmietnutý

Zakázať prístup z konkrétnej adresy IP

Deny z 195.135.232.70

Povoliť prístup iba z konkrétnej adresy IP

Objednávku zamietnuť, povoliť
Odmietnuť od všetkých
Povoliť od 195.135.232.70

Direktíva Order vám umožňuje špecifikovať poradie, v ktorom sa budú direktívy vykonávať. Najprv sa vykoná direktíva na odmietnutie prístupu (direktíva Deny) a následne sa povolí prístup pre IP adresu 195.135.232.70 (direktíva Allow). Ak zmeníte poradie direktív v prvom riadku na Objednať povoliť, odmietnuť, potom sa prístup pre IP adresu 195.135.232.70 neotvorí, pretože direktíva Deny, ktorá sa vykoná ako posledná, prepíše účinok direktívy Allow.

Poznámka
Treba si uvedomiť, že povolenie prístupu z konkrétnej IP adresy niekedy nemusí fungovať. Napríklad, ak je na hostingu nainštalovaný server proxy s reverzným ukladaním do vyrovnávacej pamäte. Ak príkazy na prístupové povolenia nefungujú, musíte v tejto veci kontaktovať službu technickej podpory hosťovania.

Presmerovanie na inú adresu

Často existujú úlohy, keď je potrebné presmerovať (presmerovať) všetky požiadavky na konkrétny adresár alebo stránku na inú adresu. Dá sa to urobiť pomocou direktív Redirect a RedirectMatch. Hlásia, že zdroj na požadovanej adrese URL chýba, a uvádzajú adresu, na ktorú sa majú prejsť. Direktívy Redirect odošlú do prehliadača príslušnú hlavičku a prehliadač vykoná presmerovanie.

inštrukcie pre súbor .htaccess

Súbor .htaccess vám umožňuje zmeniť mnohé nastavenia vašej stránky, nastavenia webového servera Apache aj možnosti PHP. Direktívy špecifikované v súbore .htaccess sa vzťahujú na adresár, v ktorom sa nachádza, ako aj na všetky vnorené adresáre (s jednou výnimkou, ktorá bude popísaná nižšie), vrátane subdomén (keďže adresáre subdomén sú podadresáre hlavnej stránky) .Súbor .htaccess sa spravidla vytvára v koreňovom adresári stránky a niekedy aj v adresároch, ktoré vyžadujú špecifické správanie web servera (zákaz zobrazenia zoznamu súborov, povolenie SSI, autorizácia atď.).

Pomocou FTP klienta si môžete vytvoriť svoj vlastný súbor .htaccess a pracovať s ním ako s akýmkoľvek iným súborom na vašej stránke.

Prečo sa novovytvorený súbor .htaccess nezobrazuje v zozname súborov?

Niektorí FTP klienti považujú súbory, ktoré začínajú bodkou, za skryté a štandardne ich nezobrazujú. V takýchto prípadoch, aby ste videli súbor .htaccess, musíte v nastaveniach FTP klienta povoliť nastavenie „Zobraziť skryté súbory“.

Prečo súbor .htaccess umiestnený v koreňovom adresári lokality nefunguje vo vnorených adresároch?

Dôvodom je optimalizácia spracovania statických súborov.

Stránky zvyčajne obsahujú veľké množstvo statických súborov. Sú to súbory, ktoré na ich zobrazenie nevyžadujú spustené skripty: obrázky, hudba, videá, css, javascript, jednoduché html stránky. Na urýchlenie stránok sa spracovávajú obchádzaním hlavného webového servera a bez analýzy súborov .htaccess.

Niekedy je potrebné zakázať optimalizáciu spracovania statických súborov v určitom adresári. Napríklad, ak ide o obrázky, ktoré je potrebné označiť vodotlačou, presmerovanie požiadaviek na ne do špeciálneho skriptu.

Aby ste zabezpečili, že súbory v adresári budú vždy spracované bez optimalizácie, musíte v tomto adresári vytvoriť súbor .htaccess. Tento súbor nesmie obsahovať žiadne direktívy, stačí len jeho existencia.

Je dôležité nezabudnúť, že zakázanie optimalizácie môže ovplyvniť rýchlosť vašej stránky a využitie zdrojov tarifného plánu.

Prečo sa v subdoméne zobrazuje chyba?

V prípade subdomény sa dedia nastavenia domény .htaccess. Ak sa v nastaveniach domény .htaccess použijú pravidlá mod_rewrite, môžu viesť k nesprávnemu fungovaniu subdomény. Aby pravidlá mod_rewrite domény neovplyvnili subdoménu, musíte do súboru .htaccess subdomény pridať nasledujúci riadok:

Prepisovací motor je vypnutý

Prečo sa pri otvorení adresára stránok v prehliadači zobrazuje 403 zakázané?

Pri otváraní adresára bez zadania konkrétneho súboru webový server hľadá súbory index.htm, index.html, index.php na zobrazenie (indexové súbory). Ak neexistujú žiadne indexové súbory, server vráti chybu 403 Zakázané, pretože zoznam súborov v adresári nie je štandardne povolený.

Ak chcete zabrániť zobrazeniu chyby 403 Forbidden, buď vytvorte indexový súbor v adresári, alebo pridajte možnosť do súboru .htaccess:

Možnosti + Indexy

Inštalácia indexového súboru pre lokalitu

Webový server štandardne považuje indexový súbor vašej lokality za súbor (v poradí podľa priority): index.html, index.php.

Ak chcete nastaviť ľubovoľný súbor ako indexový súbor, pridajte nasledujúci príkaz:

Názov súboru DirectoryIndex

Napríklad nasledujúci pokyn hovorí webovému serveru, aby pri prístupe na vašu lokalitu otvoril skript v jazyku Perl v adresári cgi-bin vašej lokality ako indexovú stránku:

DirectoryIndex /cgi-bin/engine.pl

Ako povoliť zobrazovanie chýb PHP?

Ak chcete zobraziť chyby PHP, pridajte smernicu do súboru .htaccess:

php_value display_errors 1

Ako zmeniť maximálnu veľkosť nahrávania súboru v PHP?

Maximálna veľkosť nahrávaných súborov je špecifikovaná v .htaccess pomocou dvoch smerníc:

php_value upload_max_filesize 20M php_value post_max_size 20M

Namiesto 20 miliónov zadajte požadovanú veľkosť limitu. Hodnota týchto parametrov nemôže byť väčšia ako 50 miliónov. Upozorňujeme, že symbol „M“ (latinsky M) je uvedený spolu s hodnotou.

Ako môžem povedať PHP interpreteru, aby spracoval viac ako len .php súbory?

Ak chcete prinútiť interpret PHP spracovávať súbory s ľubovoľnou príponou, musíte do súboru .htaccess, ktorý sa nachádza v koreňovom adresári vašej stránky, pridať príslušnú inštrukciu. Napríklad nasledujúci príkaz povie interpretu PHP, aby spracoval súbory .phtml:

AddType application/x-httpd-php .phtml

Ako zmeniť čas ukladania relácie PHP

Zmena času ukladania relácie môže byť potrebná, napríklad ak chcete, aby sa údaje o autorizácii používateľa na vašej lokalite uchovávali dlhšie. V predvolenom nastavení sa relácie ukladajú na 1 440 sekúnd (24 minút), súbor cookie s ID relácie sa uchováva dovtedy, kým používateľ nezatvorí prehliadač.

Ak chcete zmeniť čas uloženia relácie PHP, musíte vykonať niekoľko zmien v .htaccess. Keďže konkrétne nastavenia môžu závisieť od toho, ako vaša stránka pracuje s návštevníkmi, odporúčame vám, aby ste sa pred vykonaním zmien poradili s profesionálnym vývojárom. Možno pre vašu stránku bude efektívnejší alternatívny mechanizmus na ukladanie údajov spojených s návštevníkom (napríklad iba prostredníctvom cookies) alebo alternatívny mechanizmus na ukladanie relácií PHP (nastavený pomocou session_set_save_handler() ).

Ak chcete zmeniť čas uloženia relácie, pridajte do .htaccess nasledujúce príkazy:

# Vytvorte samostatný adresár na ukladanie relácií vašej stránky, # napríklad domény/VAŠE_STRÁNKY/tmp. Toto má zabrániť, aby PHP vymazalo relácie lokality # pri odstraňovaní starých relácií z iných lokalít spustených na účte. # Nastavte adresár úložiska relácie pre lokalitu pomocou session.save_path. php_value session.save_path /home/YOUR_LOGIN/domains/YOUR_SITE/tmp # Nastavte maximálnu životnosť relácie v sekundách. #604800 - 1 týždeň. php_value session.gc_maxlifetime 604800 # Nastavte životnosť súboru cookie, ktorý ukladá ID relácie # v prehliadači používateľa. php_value session.cookie_lifetime 604800

Upozorňujeme, že ak sa relácia otvorí pre každého neoprávneného používateľa, s veľkým počtom návštevníkov a dlhým časom šetrenia relácie, v priečinku špecifikovanom v session.save_path sa vygeneruje veľké množstvo súborov. To môže spomaliť lokalitu, keď sa spustí starý mechanizmus čistenia relácie, a zvýšiť množstvo zdrojov potrebných na fungovanie lokality. V prípade práce s veľkým počtom relácií odporúčame použiť alternatívne mechanizmy na ich ukladanie a vymazávanie, napr.

  • Zadajte vnorenie adresárov úložného priestoru relácie pomocou argumentu N v session.save_path. V tomto prípade je potrebné vymazať staré relácie pomocou vlastných skriptov. Viac informácií o tejto metóde nájdete v popise session.save_path v dokumentácii PHP.
  • Implementujte svoj vlastný mechanizmus ukladania relácie (napríklad MySQL) a nastavte ho pomocou session_set_save_handler() .

Ako povoliť SSI

Direktívy SSI (Server Side Within) sa štandardne spracovávajú v súboroch .shtml (napríklad index.shtml). Aby sa SSI spracovali v iných súboroch, musia byť v súbore .htaccess špecifikované nasledujúce smernice:

AddType text/html .html .ssi AddOutputFilter ZAHŔŇA .html .ssi

Nahraďte „.ssi .html“ príponami súborov, v ktorých by sa mali spracovávať direktívy SSI.

Ako nakonfigurovať vykonávanie skriptov CGI?

Ak chcete spustiť skripty CGI v ľubovoľnom priečinku, musíte príslušným spôsobom nakonfigurovať webový server pomocou súboru .htaccess.

  1. V priečinku, kde sa majú vykonávať skripty CGI, vytvorte súbor .htaccess takto: Options +ExecCGI
    AddHandler cgi-script .cgi .pl Nahraďte ".cgi .pl" zoznamom rozšírení, ktoré by mali byť spracované ako skripty.
  2. Nahrajte skripty do priečinka.
  3. Pomocou správcu súborov nastavte súbory skriptov na vykonávanie povolení (755).

Ako zmeniť limit využitia RAM v PHP?

Ak chcete zmeniť limit RAM, použite nasledujúcu direktívu v .htaccess:

php_value memory_limit 128M

Vymeňte 128M za požadovanú limitnú veľkosť. Upozorňujeme, že symbol „M“ (latinsky M) je uvedený spolu s hodnotou.

Ako zabezpečiť, aby sa stránka vždy otvárala pod hlavným názvom?

Ak má vaša lokalita viacero názvov, no chcete, aby používatelia vždy videli v paneli s adresou názov hlavnej lokality, pridajte do súboru .htaccess v koreňovom adresári lokality nasledujúce riadky:

RewriteEngine na RewriteCond %(HTTP_HOST) ^www.site.com RewriteRule ^(.*) http://site.com/$1

Nahraďte example.com hlavným názvom vášho webu. Teraz pri prístupe na stránku budú používatelia automaticky presmerovaní na jej hlavné meno.

Aké ďalšie nastavenia PHP je možné nastaviť v .htaccess?

Dokumentácia na stránke vývojára obsahuje úplný zoznam direktív PHP. V súbore .htaccess môžete zmeniť smernice, ktorých hodnota stĺpca Changeable zodpovedá PHP_INI_PERDIR alebo PHP_INI_ALL.





















Na čo slúži .htaccess?

Súbor .htaccess vám umožňuje individuálne nakonfigurovať webový server pre vašu stránku. Môžete nastaviť heslá pre prístup na stránku alebo celý priečinok, nastaviť predvolenú stránku, keď požadujete adresár a mnoho ďalších.

Môžete vytvoriť viacero súborov .htaccess- jeden pre každý adresár na vašej lokalite.

Pri zmene v súbore .htaccess nie je potrebné reštartovať server - akonáhle niečo v tomto súbore zmeníte, zmeny sa okamžite prejavia. Aj keď v tomto súbore urobíte chyby, prejavia sa iba na vašej stránke (alebo v adresári, v ktorom sa nachádza).

Ak sa súbor .htaccess nachádza v koreňovom adresári servera, potom sa jeho akcia vzťahuje na celý server, okrem tých adresárov, kde sa nachádza iný súbor .htaccess (a okrem všetkých priečinkov „pod“ týmto priečinkom s druhým . htaccess).

Keďže súbor .htaccess je súborom služby, nie je používateľovi webu dostupný z prehliadača.

Štruktúra vašich adresárov na serveri je nasledovná: (adresáre, do ktorých nemôžete nainštalovať súbor .htaccess, sú označené sivou

/domov/st1331/ | +-- /www/ (koreňový adresár vášho webového servera)| | | +-- .htaccess | | | +-- /www/novinky/ | | | | | +-- .htaccess | | +-- main.html | | | | | + /www/news/2003.10/ | | | | | | | + .htaccess | | | | | + /www/news/2003.11/ | | | +-- /www/data/ | | | | | +-- .htaccess | | +-- .htpasswd | | | +-- /www/obrázky/ | +-- /home/st1331/cgi-bin (pre cgi skripty) | +-- /log (služba) | +-- /štatistiky (služba)

Akcia .htaccess sa automaticky rozšíri do všetkých vnorených adresárov. Týmto spôsobom budú fungovať nasledujúce súbory .htaccess:

Adresár Valid.htaccess
/www/ /www/.htaccess
/www/novinky/ /www/.htaccess
/www/news/.htaccess
/www/news/2003.10/ /www/.htaccess
/www/news/.htaccess
/www/news/2003.10/.htaccess
/www/news/2003.11/ /www/.htaccess
/www/news/.htaccess
/www/data/ /www/.htaccess
/www/data/.htaccess
/www/images/ /www/.htaccess

Pravidlá pre písanie .htaccess

Cesty k súborom (adresárom) sa zadávajú od koreňového adresára servera.

Správny príklad:

DirectoryIndex /home/st1331/www/data/main.html DirectoryIndex /www/news/main.html

Adresovanie dokumentov umiestnených na iných miestach by sa malo vykonávať s uvedením protokolu

Správny príklad:

Presmerovanie /oldsite/ http://www.site.ru/ Presmerovať /oldsite/www.site.ru/

Komentáre sú riadky, ktoré začínajú znakom #.

Premenné prostredia môžete použiť vo výrazoch, ako napríklad %(REMOTE_ADDR) alebo %(HTTP_REFERER).

Súbor .htaccess musí byť napísaný vo formáte UNIX – to znamená, že v ňom musí byť zadaný riadkový posun jedným znakom (0x0A) a nie dvomi (0x0D 0x0A), ako v DOS alebo Windows

Smernice na určenie rozsahu

Smernica pre súbory

Popis: smernica Súbory
Syntax: názov súboru> ...
názov súboru Názov súboru
Príklad:

Objednávka Odmietnuť, Povoliť odmietnuť od všetkých Povoliť od 192.168.1.1

Smernica FilesMatch

Popis: smernica Súbory obmedziť príkazy na jeden súbor
Syntax: regulárny výraz> ...
regulárny výraz: regulárny výraz (vzor) popisujúci skupinu súborov.
Príklad:

Objednávka Povoliť, Odmietnuť Povoliť od všetkých Odmietnuť z 192.168.1.1

presmerovania (presmerovania)

Smernica o presmerovaní

externé presmerovanie(povedzte prehliadaču, aby načítal inú adresu URL).
Syntax: Presmerovať [ postavenie] cesta URL URL
postavenie
cesta URL
URL: URL, na ktorú sa má presmerovať

Dočasné presmerovanie / http://www.iho.ru/newyear.html Dočasné presmerovanie /index.html http://www.iho.ru/newyear.html Trvalé presmerovanie /prices2002.html http://www.iho.ru /prices2003.html

Direktíva RedirectMatch

Popis: Presmeruje návštevníka požadujúceho dokument na inú adresu URL. Účinkuje externé presmerovanie(povedzte prehliadaču, aby načítal inú adresu URL). Direktíva je podobná ako Redirect , s tým rozdielom, že namiesto adresy požadovaného dokumentu je napísaný regulárny výraz (vzor)
Syntax: Presmerovať [ postavenie] regulárny výraz URL
postavenie: voliteľné pole, definuje návratový kód, platné hodnoty: trvalé (301 - dokument bol presunutý natrvalo), dočasný (302 - dokument bol dočasne presunutý), seeother (303 - pozri iný), preč (410 - odstránený).
cesta URL: Miestna časť adresy URL požadovaného dokumentu.
regulárny výraz: regulárny výraz (vzor) popisujúci skupinu adries URL.

RedirectMatch (.*)\.gif$ http://www.myserver.com$1.png RedirectMatch (.*\.jpg)$ http://www.myanother.com$1

Príklad: rôzne stránky v závislosti od IP adresy návštevníka. V príklade sú návštevníci z adresy 192.168.1.1 presmerovaní na inú stránku

RewriteCond %(REMOTE_ADDR) 192.168.1.1 RewriteRule ^/$ /anoter_index_pahe.html [L]

Príklad: rôzne stránky v závislosti od odkazujúcej stránky. V tomto príklade návštevníci prichádzajúci z http://www.partner.ru/ dostanú /anoter_prices.html namiesto /prices.html

RewriteCond %(HTTP_REFERER) http://www.partner.ru/recep.html RewriteRule ^/prices.html$ /anoter_prices.html [L]

Presmerovanie návštevníka pri vyžiadaní konkrétnych stránok:

Toto je už pre všetky sieťové vírusy a skenery. Teraz bude každá požiadavka s adresou /_vti_bin automaticky presmerovaná na Microsoft:

Presmerovanie /_vti_bin http://www.microsoft.com presmerovanie /scripts http://www.microsoft.com presmerovanie /MSADC http://www.microsoft.com presmerovanie /c http://www.microsoft.com presmerovanie / d http://www.microsoft.com redirect /_mem_bin http://www.microsoft.com redirect /msadc http://www.microsoft.com RedirectMatch (.*)\cmd.exe$ http://www. microsoft.com $ 1

Obmedzenie prístupu (heslá)

Objednávková smernica

Popis: Určuje, ako fungujú príkazy a
Syntax: Objednávka objednať
objednať môže nadobúdať hodnoty Zakázať, Povoliť alebo Povoliť, Odmietnuť
Predvolené: Objednávka Zamietnuť, Povoliť

Zamietnuť smernicu

Popis: Zabraňuje určitým klientom v prístupe k zdrojom.
Syntax: Deny from all| hostiteľ
hostiteľ

Povoliť smernicu

Popis: Umožňuje konkrétnym klientom prístup k zdrojom.
Syntax: Deny from all| hostiteľ
hostiteľ môže mať hodnoty IP adresy alebo názvu hostiteľa.

Príklad: zakázať prístup všetkým

Objednať odmietnutie, povoliť odmietnutie od všetkých

Príklad: Povolenie na prístup k určitým IP adresám

Objednať odmietnutie, povoliť odmietnutie zo všetkých Povoliť z .iho.ru Povoliť z 192.168.1.1

Príklad: odmietnutie prístupu k určitým IP adresám

Objednávka Povoliť,Odmietnuť Povoliť od všetkých Zakázať z .iho.ru Odmietnuť od 192.168.1.1

Príklad: Zamietnutie prístupu ku konkrétnemu súboru. Príklad zakazuje prístup k súboru .htpasswd všetkým návštevníkom

Príklad: odmietnutie prístupu pre určitú skupinu súborov. Príklad zakazuje prístup k súborom s príponami „lib“ a „pm“ pre všetkých návštevníkov

Objednať odmietnutie, povoliť odmietnutie od všetkých

Nastavenie hesla pre prístup

Direktíva AuthName

Popis: Hodnota AuthName sa zobrazí návštevníkovi a môže sa použiť na vysvetlenie autorizačnej požiadavky.

Direktíva AuthType

Popis: Táto direktíva vyberá typ autentifikácie. Možné sú nasledujúce typy: Basic a Digest .
Syntax: AuthType Basic|Dgest

Smernica AuthUserFile

Opis: Hodnota AuthUserFile určuje názov súboru hesiel pre autentifikáciu užívateľa. Súbor hesiel je možné vytvoriť pomocou pomôcky htpasswd. Cesta k súboru hesiel je nastavená relatívne ku koreňovému adresáru webového servera. Uložte súbor hesiel do priečinka, ktorý nie je prístupný používateľom..
Syntax: AuthUserFile cestu k súboru

Vyžadovať smernicu

Popis: Definuje používateľov, ktorí majú prístup
Syntax: Vyžadovať Používateľské meno|platný-užívateľ
ukazovanie valid-user povolíte prístup všetkým používateľom uvedeným v súbore hesiel.

Príklad: umožňuje prístup k adresáru všetkým používateľom:

AuthName "Obmedzená oblasť" AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Vyžadovať platného používateľa

Príklad: umožňuje prístup do adresára iba 3 užívateľom:

AuthName "Veľmi obmedzená oblasť" AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Vyžadovať antonio solo marina

Príklad: obmedzenie prístupu k určitým súborom (v tomto príklade je obmedzený prístup k archívom zip)

AuthName "Sťahovať súbory zip môžu iba platní používatelia." AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Vyžadovať platného používateľa

Príklad: obmedzenie prístupu k jednému súboru (v tomto príklade je obmedzený prístup k súboru .htpasswd)

AuthName "Prístup je obmedzený." AuthType Basic AuthUserFile /home/st1331/www/data/.htpasswd Vyžadovať antonio solo

Správa servera

Direktíva DirectoryIndex - zmení predvolenú stránku (úvodnú stránku)

Popis: Umožňuje zmeniť stránku, ktorá sa zobrazí pri prístupe do adresára
Syntax: DirectoryIndex stránku [stránku]
stránku- názov úvodnej stránky. Je možné zadať viacero strán.
Príklad:

DirectoryIndex main.html index.php test.shtml

Direktíva ErrorDocument – ​​spracovanie chýb

Popis: umožňuje nastaviť alternatívne chybové stránky
Syntax: ErrorDocument kód cesta URL
cesta URL- miestna adresa stránky
kód- kód chyby. Najbežnejšie chybové kódy:
401 – Vyžaduje sa autorizácia
403 – Používateľ nie je overený, prístup odmietnutý (zakázané)
404 - Požadovaný dokument (súbor, adresár) sa nenašiel (nenájdený)
500 – Interná chyba servera – Chyba skriptu alebo chyba syntaxe súboru .htaccess – (Interná chyba servera)

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

Smernica AddOutputFilter - inštalácia filtra (SSI)

SetOutputFilter OBSAHUJE

Direktíva SetHandler - obsluha nastavenia (PHP, Parser)

Popis: nastavuje obsluhu pre súbory v danom adresári
Syntax: SetHandler handler-name

php-script SetHandler

Direktíva AddHandler - inštalácia obslužného programu (PHP, Parser)

Popis: nastavuje obslužný program pre súbory zadaného typu
Syntax: AddHandler handler-name názov-prípona

AddHandler php-script .html AddHandler parser-script .htm

Smernica AddDefaultCharset - obslužný program nastavenia (PHP, Parser)

Predvolené kódovanie na serveri je Windows-1251

AddDefaultCharset koi8-r

Ako prinútiť Apache spracovať smernice SSI?

SSI vám umožňujú „poskladať“ stránku z kúskov. V jednom kuse máte kód menu, v druhom kód pre hornú časť stránky, v treťom - spodok. Návštevníkovi sa zobrazí bežná stránka, ktorá pozostáva z kódu, ktorý je súčasťou vašich kúskov. Požadované nastavenia v httpd.conf: V bloku začínajúcom na a koniec pridajte Zahrnutia do riadku Indexy možností. Potom do súboru .htaccess napíšeme:

AddOutputFilter Zahŕňa .html .htm

Ako zakázať zobrazovanie obsahu adresára pri absencii indexového súboru?

Predpokladajme, že všetku grafiku použitú na stránke máte v adresári img. Návštevník môže zadať tento adresár do panela s adresou prehliadača a zobraziť zoznam všetkých vašich grafických súborov. To vám samozrejme neuškodí, ale takýto pohľad nemôžete poskytnúť návšteve. V .htaccess píšeme:

htpasswd

Direktíva htpasswd sa používa na vytvorenie súboru hesiel, ktorý možno použiť na autentifikáciu používateľov s webovým serverom.

Príklad: vytvorenie súboru s heslami a pridanie 1 názvu:

Htpasswd -c Názov súboru používateľské meno

Príklad: Pridanie alebo zmena súboru hesiel

Htpasswd Názov súboru používateľské meno2

Pridal sa súbor .htaccess a server teraz zobrazuje chybu 500. prečo?

Chyba 500 môže byť spôsobená nasledujúcimi príčinami:
1. neplatná syntax .htaccess
2. Súbor .htaccess je napísaný vo formáte Windows, ale musí byť napísaný vo formáte UNIX