Debug RewriteRule szabályokat, vagy egy kicsit a bensőséges élet mod_rewrite

Azt RewriteEngine mindig elég stresszes témát. Csak nemrég hirtelen úgy találta, hogy minden valahogy telepedett le, és vált többé-kevésbé világos. Mivel én elég egy hétköznapi ember, biztos vagyok benne, hogy a konfigurációs hiba helyzet a webszerver „kap”, és nem vagyok egyedül sietek, hogy megosszák egymással tapasztalataikat.

Kiderült, valami között útmutatást használata mod_rewrite modul, és egyfajta útmutató konfigurálása a webkiszolgáló segítségével a .htaccess fájlt. Az út mentén, szeretnék összpontosítani különösen nehéz vagy nem egyértelmű pontokat.

A kiindulási adatok kísérletek



  • Minden kísérletet végeztünk a helyi gépen.
  • Telepített szerver lampp
  • Apache Verzió: 2.4.9 (Build Unix)
  • A mappa / opt / lampp / htdocs / BBB / _engine egy tapasztalt helyszíni engine.bbb.ru tartományban. Ez egy gyökér könyvtárban (DocumentRoot).
  • A gyökérkönyvtárában a helyszínen csak egy oldal ind.php.
  • Az oldalon van egy mappa / opt / lampp / htdocs / BBB / _engine / local.
  • Ez egy script fájlt ind1.php

Konfigurálása virtuális gépeket


Hogy könnyebb futni, hibakeresés, és csóválják az idegek, ahol nem tudja, jó lenne, hogy hozzanak létre a virtuális gépek szempontjából kényelmét. Tekintsük a legegyszerűbb konfiguráció, ami nagyban megkönnyíti az életünket.

konfigurálása rönk


Kevesen a helyi gépen csak egy domaint. Domains általában sokkal. Jó lenne megosztani a naplókat a tartomány és a napok, hogy nem nő túl. Ez úgy történik, egy szakasza, a szerver konfigurációját.

A bejelentkezéshez hibákat a domain, adjuk hozzá a következő két sort.


Az első a neve a hibanaplót virtuális szerver és teszi induló új napló minden 86.400 másodperc. Rotatelogs egy olyan program, amely általában tartalmazza az Apache webszerver, és remélem, hogy van ez is telepítve van.

A második sor adja meg a méret az egyes vonalon a hiba napló. A részletek megtalálhatók a dokumentációban az Apache szerver. Van mind nagyon világos. Ebben a cikkben fontos, hogy csak szem előtt tartani, hogy a formátum van beállítva.

Ahhoz, hogy a napló I csak egy sort. A formátum a „default” vonal Én általában boldog.


Mindkét esetben vegye figyelembe az utat a webkiszolgáló programok és a naplók. Telepíteni kell a útvonalakat, hogy létezik a számítógépen.

A legtöbb általános információkat hogyan működnek a dolgok


a .htaccess fájlban. kik fogják kezelni ezt a mappát. Ezen kívül van más alábbi sorokat ezen irányelv és bizonyos szabályok újraírása.

Tegyük fel, hogy a szerver megkapja az input egy URL-t. RewriteEngine kezdődik ez az URL segítségével ellenőrizni szabályokat. Ő csinálja fentről lefelé sorrendben. Ha a bejövő URL nem felel meg semmilyen szabályt, azt nevezzük „pass”. Tegyük fel például, hogy van a gyökér könyvtárban az index.php fájlt. Ha a bemeneti Uri „/index.php” nem felel meg semmilyen szabályt, látni fogjuk, a böngésző kimenet a szkript.

Ha már a következő szabály


nyilvánvaló, hogy ez a szabály «index.php» Uri munkát. Ebben az esetben, Uri lesz átírt „” és az új uri „/” fog küldeni a bemenet kiszolgáló. És az egész folyamat a szabályok alkalmazásának megy újra. Csak akkor, ha az uri „/” nem felel meg sem a szabály, hogy azt látjuk, amit akarunk. És ha megfelel, akkor lehet újraírni, újra és újra minden elölről.

Hogy a zászló [L]


Valószínűleg ez a zászló teszi különösen a sok félreértés. A jelenléte a zászló megakadályozza Uri tesztbemenettel a következő szabályok szerint neki, ha ezt a szabályt dolgozott. Ez minden. Azaz, ha a Uri «index.php» tesztelték (általában dolgozott vele), akkor azért, mert a jelenléte a zászló [L] azt megszakítja minden későbbi ellenőrzések, és a web szerver azonnal termel átírta «index.php» -> „” és kap input uri „/” ([belső átirányítás)], és ez ismétlődik a kezdetektől, az első szabály. Ha ez a jelző nincs jelen, akkor az újraírás még folyik, és ellenőrzés folytatódik a következő szabályt. De Uri fog változni, és ez „/”.

Megérthető a folyamat azonnal megakadályozza a sok ciklikus átirányításokat.

De hadd, hogy fent leírt azt jelenti, hogy ha nem használja a zászló [L], akkor időt takaríthat meg, és az oldal hamarosan megnyitja kapuit? Találkozunk a zászló [L] és meg kell felelnie ismét minden a szabályok, kivétel nélkül, és ha nem tesz a zászló [L], akkor ezt fogjuk tenni a újraírás szabály megbotlott, majd megy a végére az összes szabályt, és ezen a végén?

Megnéztem. Ez nem működik. Ennek hiányában flags [L], a modul, mint várható volt, hogy cserélje ki Uri kioldott szabály, megy az összes többi szabályokat, hogy a végén, akkor termel [belső átirányítás], és még mindig fut, hogy ez Uri minden szabályt újra. Ezt támasztja alá, amit fentebb írtam. Ez a szabály úgy tűnik, hogy nincs kivétel.

Következtetés: minden alkalommal, amikor egy szabály váltotta ki a RewriteRule van [belső átirányítás] és ismételt alkalmazása az összes szabályt. Ezt a második utat kezdődik meg azonnal a szabály alkalmazását a zászló [L], vagy az után elfogyott az összes szabályt, a munkát, ha nem flags [L]. „Pass” helyzet vágás, egy úgy nevezett «átmennek» csak akkor fordulhat elő, ha nincs szabály alkalmazására nem került sor. Flag [L] valóban csökkenti a feldolgozási időt Uri és fel kell használni, ahol csak lehetséges.

Mi RewriteBase?


Ez a megállapítás, véleményem szerint, a rekord az érthetetlen! Adnék neki ezt a díjat! Tekintettel erre, van két történeteket az állat - rövid és hosszú. Rövid történet azoknak, akik nem akarnak bajlódni, hogy ezeket az utasításokat. Hosszú az érdeklődők számára.

elbeszélés


Ha egy viszonylag egyszerű URL-átírása segítségével .htaccess fájlt, azt javasoljuk, hogy mindig a következőképpen kell eljárni.


  • Ne használjon le az irányelv egyáltalán.
  • Minden szabály a cél átírásához mindig kezdeni egy perjel (jelezve, hogy Uri képest a gyökér a helyén)
hosszú történet


A következő folyamatok fordulhatnak elő újraírása:

Van:

  • Document Root: / opt / lampp / htdocs / bbb / _engine
  • A .htaccess fájl ott van, a Document Root

Kérünk URL engine.bbb.ru/ind.php

  • Szolgáltatás újraírás vezet az út a kért fájl elérési útját a fájlrendszerben, nevezetesen az opt / lampp / htdocs / BBB / _engine / ind.php
  • Vegye ki azokból előtag opt / lampp / htdocs / BBB / _engine / (egybeesik az utat, hogy a mappát, amely abban rejlik, .htaccess)
  • Alkalmazandó szabályok újraírása felhasználásával «ind.php» vonalon

Ha a mappa / opt / lampp / htdocs / BBB / _engine / local nincs .htaccess fájlt vagy ott, de ez nem szerepel RewriteEngine

  • Kérünk URL engine.bbb.ru/local/ind1.php
  • Szolgáltatás újraírás vezet az út a kért fájl elérési útját a fájlrendszerben, nevezetesen az opt / lampp / htdocs / BBB / _engine / local / ind1.php
  • Vegye ki a prefix opt / lampp / htdocs / BBB / _engine /
  • Szabályait fogja alkalmazni az újraírás, egy húr «helyi / ind.php»
Ha a mappa / opt / lampp / htdocs / BBB / _engine / local .htaccess fájlt, és ez lehetővé tette RewriteEngine

  • Kérünk URL engine.bbb.ru/local/ind1.php
  • Szolgáltatás újraírás vezet az út a kért fájl elérési útját a fájlrendszerben, nevezetesen az opt / lampp / htdocs / BBB / _engine / local / ind1.php
  • Vegye ki a prefix opt / lampp / htdocs / BBB / _engine / local / (ez a mappa elérési útját, ahová a fájlt .htaccess a / helyi)
  • Alkalmazandó szabályok újraírása felhasználásával «ind1.php» vonalon

Figyelem! Ez az algoritmus kerül végrehajtásra mindig. Ez az algoritmus különleges tulajdonságát fejezi ki az a „per-dir”, azaz „a vezető” megközelítés rejlő kiszolgáló Apache. Jelentés RewriteBase irányelv tette (az algoritmus) nem érinti.
Ugyanezen a hatás RewriteBase irányelv?


Meg kell nagyon jó tudni, hogy az irányelv RewriteBase megadott URL! Nem adhatja meg, ha a „helyi /” Tévedés! Csak akkor „/ helyi”.

Legyen a mi /opt/lampp/htdocs/bbb/_engine/local/.htaccess utaltunk


Kérünk URL engine.bbb.ru/local/


Ez működik! És ez lesz az átmenetet Uri /local/ind1.php


is működik, de az átmenet kerül sor az Uri /ind1.php. A fájl nem található! Ilyen Uri (helyhez viszonyítva gyökér), mi nem!

1. következtetés: URL, amit jelezze RewriteBase adunk előtagot, hogy a cél az Uri ha relatív, hogy van, az elején van egy perjel.

2. következtetés: ha soha nem használja relatív cél Uri a szabályokat, akkor az irányelv RewriteBase nem kell!

3. következtetés: Ha használjuk «RewriteBase /», akkor a szabály tehát


Megkísérli elmúlik az Uri /ind1.php. Egyszerűen kezelhető „/” előtag.

Megvan a következő szabályokat RewriteEngine a gyökér .htaccess:

Ha RewriteBase van urlom, majd állítsuk be


Nem. Ez nem megy. Hiba „RewriteBase: argumentum nem egy érvényes URL”. Furcsa, nem? De nem adjuk fel! Változás RewriteBase!


Ebben az esetben nincs hiba! Amit folyik a módja? Sok érdekes!
A szerver kap egy tisztességes módja az / opt / lampp / htdocs / BBB / _engine /. eltávolítja a prefix / opt / lampp / htdocs / BBB / _engine /, és működik egy üres string ( '').
Találkozunk a szabályt, és az üres vonal „ind.php”
Őszintén hozzá az előtag „//bbb.ru”, és menj a következő lépés. Ez a második szakasz egyenértékű hívó engine.bbb.ru//bbb.ru/ind.php. hogy nagyjából nem az, amit akartunk (ez volt az eredeti vágy skaknut másik oldalon). Röviden, az ötlet nem kifizetődő. Ennek eredményeként, van egy 404, ami logikus. By the way, „//” vagyunk a folyamat átírta a szerver helyett „/”. Felkutatását Ezt a példát jóval alacsonyabb.

Megvan minden lélegzetelállító részleteket az intim élet a Apache szerver? Vagy végül hibakeresés


Tényleg! Láttam egy hiba, amely szolgáltatás átnevezni URL-eket? Elvégre ez egy hibakereső! Van néhány nagyon hasznos iránymutatásokat, amelyek tettem egy virtuális host domain engine.bbb.ru. nevezetesen,

És mi az a „figyelmeztetni”? Szó mi LogLevel bejegyzés azt jelenti, hogy az összes modul figyelmeztesse hibaarány, és csak átírni modul - trace4

Amit kapunk eredményeként felvétele hibakeresés?

Gondolom újraírás felkutatása a következő feltételekkel:

Hibakeresés érvényes a virtuális host, amely


Ha engine.bbb.ru domainje külső css stílusokat venni a domain bbb.ru. és ez a probléma, akkor nem tartalmazza a hibakeresés a virtuális engine.bbb.ru szerver, és fel kell tüntetni a virtuális szerver bbb.ru. Ezután az összes hívás a domain bbb.ru kell nézni a hibanaplók (nem jut!) Bbb.ru. domén Ebben az esetben felhívja a nyomon objektum nincs a hozzáférési naplók egyáltalán!

És nem tudja használni, mint egy stresszes RewriteEngine egyáltalán?


Meg lehet váltani a csak egy script az egész hely, és a teljes újraírása is. A PHP csinálni könnyebb, és a hibakeresés sokkal könnyebb. Amellett a nyilvánvaló előnye a biztonsági kérdéseket a helyszínen, megkapjuk a kényelem a szóváltás újraírása. Menni egy ilyen rendszer a munka, a .htaccess kell, mint ez:

És a script dispatch.php Erősen ajánlott, hogy ne felejtsük el, hogy letiltja a közvetlen könyörgése a dispatch.php.

Ha hirtelen szeretné, hogy ez a megközelítési mód, akkor azt ajánlom, egy script dispatch.php nevezett valami más módon. Régebben ez a cím csak illusztratív célokat szolgál.

By the way, ez a megközelítés végrehajtása folyamatban van elég aktívan. Hogy mi kell hálás bevezetése CNC (URL, ember által olvasható, de nekem személy szerint nem világos). Gyakorlatilag ez már hatályos minden modern motorok.

Átvágni D-Link DIR-890L
Az elmúlt 6 hónapban én már borzasztóan elfoglalt és nem követi az új szar a D-Link. Ahhoz, hogy egy kis móka, mentem a saját honlapján, és én fogadta ezt a rémálmot: a legőrültebb router D-Link DIR-890L $ 300 Talán a legtöbb „őrült” a router, hogy fut mindegy zabagovannoy firmware-t, D-link jogutódai

Debug RewriteRule szabályokat, vagy egy kicsit a bensőséges élet mod_rewrite

Automatikus összeállítás csomagok CMS Joomla!
Mielőtt elkezdtem dolgozni a jelenlegi projekt, én nem hiszem, hogy valaha is kell használni eszközöket automatikusan építeni projekteket. Végülis, a munka kizárólag az értelmezett nyelvek, amelyek nem igényelnek összeállítása. Azonban, mint kiderült, ezek hasznosak lehetnek a fejlődő PHP és különösen akkor, ha a Joomlával dolgozni

Debug RewriteRule szabályokat, vagy egy kicsit a bensőséges élet mod_rewrite

Saját változata .htaccess
Az egyik korábbi bejegyzéseit a tematikus .htaccess kezdőknek, szeretném ajánlani a saját verzióját a különböző kezelések és tilalmak, és strukturálása bizonyos logika, de a karma volt a piros, akkor a spread most. A figyelmet, hogy az én Peer URL feldolgozási szabályok magyarázatokkal és kommentárok a „miért?”.

DDOS-bot PHP sétál szervereken
Ma körülbelül két órakor, amikor akartam menni aludni, én voltam a Skype írta egyik barátjának. Tavaly, segítettem neki beadni néhány szerverrel. Ilyen késői órán, azt írta, hogy a hálózati interfész az egyik a szerverek teljesen eltömődik ítélve mrtg ütemtervet. Néztem, tényleg, én nem is éri

Debug RewriteRule szabályokat, vagy egy kicsit a bensőséges élet mod_rewrite