Kif Twettaq Ridirezzjoni Interna b'mod_rewrite f'Apache


F'dan l-artikolu u f'dak li jmiss se nispjegaw kif tuża mod_rewrite, biex timmappa ċerti talbiet HTTP għal paġni oħra f'websajt, jew għal URL estern.

Fi kliem ieħor, dan il-modulu Apache magħruf se jippermettilek li terġa 'tidderieġi URL għal ieħor, li aħna se nuru permezz ta' eżempji prattiċi.

NOTA: L-eżempji hawn taħt jassumu li inti tal-inqas kemmxejn familjari mal-Espressjonijiet Regolari Kompatibbli Perl (PCRE). Peress li dak is-suġġett huwa barra mill-ambitu ta 'dan l-artikolu, irreferi għad-dokumenti Perl 5 verżjoni 24.0 għal aktar dettalji dwar PCRE.

Qabel ma tipproċedi, kun żgur li l-modulu tal-kitba mill-ġdid ikun mgħobbi. Għalkemm din hija l-imġieba awtomatika f'CentOS u distribuzzjonijiet simili, f'Debian u fid-derivattivi ser ikollok bżonn tgħabbiha manwalment kif ġej:

# a2enmod rewrite

Konfigurazzjoni ta' Apache biex Uża l-Modulu mod_rewrite

Għas-sempliċità, ejja nużaw is-sit default f'kaxxa CentOS 7 (IP 192.168.0.100) biex tispjega kif tuża mod_rewrite (DocumentRoot: /var/www/html, fajl ta 'konfigurazzjoni: /etc/httpd/conf/httpd.conf).

Sabiex Apache juża dan il-modulu, żid il-linja li ġejja mal-fajl tal-konfigurazzjoni:

RewriteEngine on

Huwa importanti li wieħed jinnota li din il-konfigurazzjoni mhux se tintiret minn hosts virtwali fl-istess kaxxa.

Għalhekk, ser ikollok bżonn iżżid RewriteEngine fuq għal kull ospitanti virtwali fejn trid tuża regoli tal-kitba mill-ġdid.

Direzzjoni mill-ġdid interna hija l-aktar eżempju sempliċi ta 'mod_rewrite. Jekk trid tidderieġi mill-ġdid it-talbiet kollha għal default.aspx għal index.html, żid il-linja li ġejja (magħrufa wkoll bħala regola tal-kitba mill-ġdid) taħt RewriteEngine fuq:

RewriteRule "^/default\.aspx$" "/index.html"

u tinsiex terġa 'tibda Apache sabiex il-bidliet jidħlu fis-seħħ.

Dan jista 'jkun utli jekk is-sit tiegħek kien oriġinarjament iddisinjat bl-użu ta' ASP u aktar tard inbidel għal HTML5 sempliċi. Il-magni tat-tiftix se jkollhom il-fajl .aspx indiċjat iżda dak il-fajl ma jeżistix aktar.

F'dak il-każ, ikollok bżonn issib mod kif terġa 'tidderieġi t-talba sabiex il-viżitaturi prospettivi tiegħek ma jsibux paġna ta' żball. Biex tittestja, ejja noħolqu fajl HTML sempliċi bl-isem index.html ġewwa /var/www/html bil-kontenut li ġej:

<!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>

Is-sinjali caret u dollaru se jikkawżaw li l-espressjoni regolari taqbel ma 'kwalunkwe sekwenza li tibda b'/default u tispiċċa b'.aspx, rispettivament.

Issa tniedi l-brawżer tiegħek u ppuntah lejn 192.168.0.100/default.aspx. Jekk l-affarijiet imorru kif mistenni, Apache għandu jservi index.html minflok.
Madankollu, l-utent aħħari xorta se jara default.aspx fil-bar tal-indirizzi li jikkawża li l-bidla tkun totalment trasparenti:

Jekk trid li l-URL fil-bar tal-indirizz juri li s-server fil-fatt qed iservi index.html minflok paġna bl-isem default.aspx, żid [R, L] sal-aħħar tar-regola tal-kitba mill-ġdid kif ġej:

RewriteRule "^/default\.aspx$" "/index.html" [R,L]

Hawnhekk [R,L] hemm żewġ bnadar fakultattivi li jindikaw li redirect HTTP komplut għandu jinħareġ lill-browser (R) u li m'għandhom jiġu pproċessati l-ebda regoli oħra:

Innota kif il-bar tal-indirizz issa turi index.html, kif mistenni, minflok default.aspx kif għamlet qabel.

F'dan l-artikolu spjegajna kif tuża mod_rewrite biex twettaq direzzjoni mill-ġdid interna. Żomm sintonizzat għall-post li jmiss fejn se nitgħallmu kif nidderieġu mill-ġdid għal riżors li ġie mċaqlaq għal server differenti, u kif niktbu mill-ġdid il-bnadar.

Bħal dejjem, tħossok liberu li tuża l-formola tal-kummenti hawn taħt jekk għandek xi mistoqsijiet jew feedback dwar dan l-artikolu. Aħna ħerqana li nisimgħu mingħandek!