Wéi eng intern Viruleedung mat mod_rewrite an Apache auszeféieren
An dësem Artikel an am nächste wäerte mir erkläre wéi Dir mod_rewrite benotzt, fir gewësse HTTP-Ufroen op aner Säiten an enger Websäit ze mapen oder op eng extern URL.
An anere Wierder, dëse bekannte Apache-Modul erlaabt Iech eng URL op eng aner ze redirectéieren, wat mir duerch praktesch Beispiller illustréieren.
NOTÉIERT: D'Beispiller hei drënner huelen un datt Dir op d'mannst e bësse vertraut sidd mat Perl Compatible Regular Expressions (PCRE). Well dëst Thema aus dem Ëmfang vun dësem Artikel ass, kuckt op d'Perl 5 Versioun 24.0 Dokumenter fir méi Detailer iwwer PCRE.
Ier Dir weidergeet, gitt sécher datt de Rewrite Modul gelueden ass. Och wann dëst de Standardverhalen an CentOS an ähnlechen Verdeelungen ass, an Debian an Derivate musst Dir et manuell wéi follegt lueden:
# a2enmod rewrite
Apache konfiguréieren fir mod_rewrite Modul ze benotzen
Fir Einfachheet, loosst eis de Standardsite an enger CentOS 7 Këscht (IP 192.168.0.100) benotzen fir z'erklären wéi Dir mod_rewrite benotzt (DocumentRoot: /var/www/html, Konfiguratiounsdatei: /etc/httpd/conf/httpd.conf).
Fir Apache dëse Modul ze benotzen, füügt déi folgend Zeil an d'Konfiguratiounsdatei:
RewriteEngine on
Et ass wichteg ze bemierken datt dës Konfiguratioun net vu virtuelle Hosten an der selwechter Këscht geierft gëtt.
Also musst Dir RewriteEngine addéieren fir all virtuelle Host wou Dir Rewrite Regelen benotze wëllt.
Eng intern Viruleedung ass dat einfachst Beispill vu mod_rewrite. Wann Dir all Ufroe fir default.aspx op index.html redirect wëllt, füügt déi folgend Linn (och bekannt als Rewrite Regel) ënner RewriteEngine op:
RewriteRule "^/default\.aspx$" "/index.html"
a vergiesst net Apache nei ze starten fir datt d'Ännerungen a Kraaft trieden.
Dëst ka praktesch kommen wann Äre Site ursprénglech mat ASP entworf gouf a spéider op plain HTML5 geännert gouf. Sichmaschinne wäerten den .aspx
-Datei indexéiert hunn, awer dee Fichier gëtt et net méi.
An dësem Fall musst Dir e Wee fannen fir d'Ufro ze redirectéieren sou datt Är potenziell Besucher net op eng Fehlersäit lafen. Fir ze testen, loosst eis eng einfach HTML Datei mam Numm index.html
bannen /var/www/html erstellen mat den folgenden Inhalter:
<!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>
D'Caret an d'Dollar Schëlder verursaachen datt de reguläre Ausdrock all String mat /default
endet an op .aspx
endet, respektiv.
Elo starten Äre Browser a weist et op 192.168.0.100/default.aspx. Wann d'Saache goen wéi erwaart, soll Apache amplaz index.html
déngen.
Wéi och ëmmer, den Endbenotzer wäert nach ëmmer default.aspx
an der Adressbar gesinn, wat d'Ännerung ganz transparent mécht:
Wann Dir wëllt datt d'URL an der Adressbar weist datt de Server en tatsächlech index.html
servéiert amplaz vun enger Säit mam Numm default.aspx
, add [R, L]
zum Enn vun der Rewrite Regel wéi follegt:
RewriteRule "^/default\.aspx$" "/index.html" [R,L]
Hei sinn [R,L]
zwee fakultativ Fändelen déi uginn datt e komplette HTTP-Redirect un de Browser (R)
ausgestallt soll ginn an datt keng weider Reegelen veraarbecht ginn:
Notéiert wéi d'Adressbar elo index.html
weist, wéi erwaart, anstatt default.aspx
wéi et virdru gemaach huet.
An dësem Artikel hu mir erkläert wéi Dir mod_rewrite benotzt fir intern Viruleedung auszeféieren. Bleift ofgeschloss fir den nächste Post wou mir léiere wéi een op eng Ressource ëmgeleet gëtt, déi op en anere Server geplënnert ass, a wéi Fändelen ëmschreiwen.
Wéi ëmmer, fillt Iech gratis de Kommentarformular hei ënnen ze benotzen wann Dir Froen oder Feedback iwwer dësen Artikel hutt. Mir freeën eis vun Iech ze héieren!