U ovom članku iu sljedećem ćemo objasniti kako se koristi mod_rewrite, za mapiranje određenih HTTP zahtjeva na druge stranice na web stranici ili na vanjski URL.
Drugim riječima, ovo dobro poznato Apache modul omogućit će vam preusmjeravanje URL -a na drugi, što ćemo ilustrirati kroz praktične primjere.
Predloženo čitanje:5 savjeta za povećanje performansi vašeg Apache web poslužitelja
BILJEŠKA: Primjeri u nastavku pretpostavljaju da ste barem donekle upoznati Perl kompatibilni regularni izrazi (PCRE). Budući da ta tema nije obuhvaćena ovim člankom, pogledajte Perl 5 verzija 24.0 docs za više pojedinosti o PCRE -u.
Prije nego nastavite, provjerite je li modul za prepisivanje učitan. Iako je ovo zadano ponašanje u CentOS i slične distribucije, u Debian i izvedenice morat ćete ga učitati ručno na sljedeći način:
# a2enmod prepišite.
Radi jednostavnosti, upotrijebimo zadanu web lokaciju u CentOS 7 kutija (IP 192.168.0.100) kako biste objasnili kako se koristi
mod_rewrite (DocumentRoot: /var/www/html, konfiguracijska datoteka: /etc/httpd/conf/httpd.conf).Da bi Apache mogao koristiti ovaj modul, u konfiguracijsku datoteku dodajte sljedeći redak:
Prepiši motor uključen.
Važno je napomenuti da ovu konfiguraciju neće naslijediti virtualni domaćini u istoj kutiji.
Stoga ćete morati dodati Prepišite motor uključeno za svaki virtualni host na kojem želite koristiti pravila za prepisivanje.
Unutarnje preusmjeravanje najjednostavniji je primjer mod_rewrite. Ako želite preusmjeriti sve zahtjeve za zadano.aspx do index.html, dodajte sljedeći redak (poznat i kao pravilo prepisivanja) pod Prepišite motor na:
RewriteRule "^/default \ .aspx $" "/index.html"
i ne zaboravite ponovno pokrenuti Apache kako bi promjene stupile na snagu.
Ovo bi moglo biti korisno ako je vaša web stranica izvorno dizajnirana pomoću ASP a kasnije promijenjen u običan HTML5. Tražilice će imati .aspx
datoteka indeksirana, ali ta datoteka više ne postoji.
U tom slučaju morat ćete pronaći način da preusmjerite zahtjev kako vaši potencijalni posjetitelji ne bi naišli na stranicu s pogreškom. Za testiranje, stvorimo jednostavnu HTML datoteku pod nazivom index.html
unutra /var/www/html sa sljedećim sadržajem:
Nova web stranica Default.aspx je bio ovdje, ali sada je index.html
The znak za umetanje i dolar znakovi će uzrokovati da regularni izraz odgovara bilo kojem nizu koji počinje s /default
a završava sa .aspx
, odnosno.
Predloženo čitanje:Instalirajte Mod_Pagespeed kako biste ubrzali performanse Apachea do 10x
Sada pokrenite svoj preglednik i pokažite na njega 192.168.0.100/default.aspx. Ako stvari idu kako se očekuje, Apache bi trebao poslužiti index.html
umjesto toga.
Međutim, krajnji će korisnik i dalje vidjeti zadano.aspx
u adresnoj traci zbog čega je promjena potpuno transparentna:
Ako želite da URL u adresnoj traci pokaže da poslužitelj zapravo poslužuje index.html
umjesto stranice s imenom zadano.aspx
, dodati [R, L]
do kraja pravila prepisivanja na sljedeći način:
RewriteRule "^/default \ .aspx $" "/index.html" [R, L]
Ovdje [R, L]
dvije su izborne zastavice koje ukazuju na to da se pregledniku mora izdati potpuno HTTP preusmjeravanje (R)
i da se ne smiju obrađivati daljnja pravila:
Obratite pažnju na to kako se sada prikazuje adresa index.html
, očekivano, umjesto zadano.aspx
kao i ranije.
U ovom smo članku objasnili kako koristiti mod_rewrite za izvođenje internog preusmjeravanja. Pratite sljedeći post u kojem ćemo naučiti kako preusmjeriti na resurs koji je premješten na drugi poslužitelj i kako prikazivanje prilagođenog sadržaja na temelju preglednika korisnika. Do tada, pogledajte Apache 2.4 dokumente za potpuni popis dostupnih prepisati zastave.
Kao i uvijek, slobodno koristite obrazac za komentare u nastavku ako imate pitanja ili povratnih informacija o ovom članku. Veselimo se čuti od vas!