Hogyan hajtsunk végre belső átirányítást a mod_rewrite segítségével az Apache-ban
Ebben a cikkben és a következőben elmagyarázzuk, hogyan kell használni a mod_rewrite-t, bizonyos HTTP-kéréseket a webhely más oldalaihoz vagy egy külső URL-hez rendelni.
Más szóval, ez a jól ismert Apache modul lehetővé teszi egy URL átirányítását egy másikra, amit gyakorlati példákon keresztül mutatunk be.
Javasolt olvasmány: 5 tipp az Apache webszerver teljesítményének növeléséhez
MEGJEGYZÉS: Az alábbi példák feltételezik, hogy legalább valamennyire ismeri a Perl-kompatibilis reguláris kifejezéseket (PCRE). Mivel ez a téma nem tartozik a cikk hatókörébe, a PCRE-vel kapcsolatos további részletekért tekintse meg a Perl 5 24.0-s verzióját tartalmazó dokumentumokat.
Mielőtt folytatná, győződjön meg arról, hogy az újraíró modul be van töltve. Bár ez az alapértelmezett viselkedés a CentOS és hasonló disztribúciók esetén, a Debian és a származékos verziókban manuálisan kell betöltenie az alábbiak szerint:
a2enmod rewrite
Az Apache beállítása a mod_rewrite modul használatára
Az egyszerűség kedvéért használjuk az alapértelmezett webhelyet a CentOS 7 mezőben (IP 192.168.0.100) a mod_rewrite ( DocumentRoot: /var/www/html, konfigurációs fájl: /etc/httpd/conf/httpd.conf).
Ahhoz, hogy az Apache használni tudja ezt a modult, adja hozzá a következő sort a konfigurációs fájlhoz:
RewriteEngine on
Fontos megjegyezni, hogy ezt a konfigurációt nem öröklik az ugyanabban a dobozban lévő virtuális gazdagépek.
Ezért minden olyan virtuális gazdagéphez hozzá kell adnia a RewriteEngine-t, ahol újraírási szabályokat szeretne használni.
Belső átirányítás: URL hozzárendelése egy másikhoz ugyanazon a virtuális gazdagépen
A belső átirányítás a mod_rewrite legegyszerűbb példája. Ha a default.aspx összes kérését át szeretné irányítani az index.html oldalra, adja hozzá a következő sort (más néven átírási szabály) a RewriteEngine alatt. > on:
RewriteRule "^/default\.aspx$" "/index.html"
és ne felejtse el újraindítani az Apache-t, hogy a változtatások érvénybe lépjenek.
Ez hasznos lehet, ha webhelyét eredetileg ASP használatával tervezték, majd később egyszerű HTML5-re változtatták. A keresőmotorok indexelni fogják az .aspx
fájlt, de ez a fájl már nem létezik.
Ebben az esetben meg kell találnia a módot a kérés átirányítására, hogy a leendő látogatói ne kerüljenek hibaoldalra. A teszteléshez hozzunk létre egy egyszerű HTML-fájlt index.html
néven a /var/www/html fájlban a következő tartalommal:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>New site</title>
</head>
<body>
<h2>Default.aspx was here, but now it's index.html</h2>
</body>
</html>
A caret és a dollar jelek hatására a reguláris kifejezés minden /default
-val kezdődő és .aspx
-ra végződő karakterláncra illeszkedik. , ill.
Javasolt olvasmány: Telepítse a Mod_Pagespeed programot az Apache teljesítményének akár 10-szeresére történő felgyorsításához
Most indítsa el a böngészőt, és mutasson rá a 192.168.0.100/default.aspx címre. Ha a dolgok a várt módon mennek, az Apache helyett az index.html
fájlt kell kiszolgálnia.
A végfelhasználó azonban továbbra is látni fogja a default.aspx
fájlt a címsorban, így a változtatás teljesen átlátható lesz:
Ha azt szeretné, hogy a címsorban lévő URL azt mutassa, hogy a szerver valójában az index.html
fájlt szolgálja ki a default.aspx
nevű oldal helyett, adja hozzá a [R, L]
az átírási szabály végére a következőképpen:
RewriteRule "^/default\.aspx$" "/index.html" [R,L]
Itt található a [R,L]
két opcionális jelző, amelyek azt jelzik, hogy egy teljes HTTP-átirányítást kell kiadni a (R)
böngészőhöz, és nem kell további szabályokat feldolgozni:
Figyelje meg, hogy a címsorban most az index.html
jelenik meg, ahogy az várható volt, a korábban látható default.aspx
helyett.
Összegzés
Ebben a cikkben elmagyaráztuk, hogyan lehet belső átirányítást végrehajtani a mod_rewrite használatával. Maradjon velünk a következő bejegyzéssel kapcsolatban, ahol megtanuljuk, hogyan irányíthatunk át egy másik szerverre áthelyezett erőforrásra, és hogyan jeleníthetünk meg egyéni tartalmat a felhasználó böngészője alapján. Addig is tekintse meg az Apache 2.4-es dokumentumokat az elérhető átírási jelzők teljes listájáért.
Mint mindig, nyugodtan használja az alábbi megjegyzés űrlapot, ha bármilyen kérdése vagy visszajelzése van ezzel a cikkel kapcsolatban. Várom válaszukat!