Weboldal keresés

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!