Giunsa Pagbuhat ang Internal Redirection nga adunay mod_rewrite sa Apache


Niining artikuloha ug sa sunod ipatin-aw namo kon unsaon paggamit ang mod_rewrite, sa pagmapa sa pipila ka hangyo sa HTTP ngadto sa ubang mga panid sa usa ka website, o sa eksternal nga URL.

Sa laing pagkasulti, kining inila nga Apache module magtugot kanimo sa pag-redirect sa usa ka URL ngadto sa lain, nga among iilustrar pinaagi sa praktikal nga mga pananglitan.

PAHINUMDOM: Ang mga pananglitan sa ubos nagtuo nga labing menos medyo pamilyar ka sa Perl Compatible Regular Expressions (PCRE). Tungod kay kana nga hilisgutan wala sa sakup sa kini nga artikulo, tan-awa ang Perl 5 nga bersyon 24.0 nga mga dokumento alang sa dugang nga mga detalye sa PCRE.

Sa dili pa mopadayon, siguroha nga ang module sa pagsulat pag-usab gikarga. Bisan kung kini ang default nga pamatasan sa CentOS ug parehas nga mga pag-apod-apod, sa Debian ug mga derivatives kinahanglan nimo nga i-load kini nga mano-mano sama sa mosunod:

# a2enmod rewrite

Pag-configure sa Apache aron magamit ang mod_rewrite Module

Alang sa kayano, atong gamiton ang default site sa CentOS 7 box (IP 192.168.0.100) aron ipatin-aw unsaon paggamit ang mod_rewrite (DocumentRoot: /var/www/html, configuration file: /etc/httpd/conf/httpd.conf).

Aron magamit sa Apache kini nga module, idugang ang mosunod nga linya sa configuration file:

RewriteEngine on

Mahinungdanon nga timan-an nga kini nga pagsumpo dili mapanunod sa mga virtual nga host sa parehas nga kahon.

Sa ingon, kinahanglan nimo nga idugang ang RewriteEngine alang sa matag virtual host diin gusto nimo gamiton ang mga lagda sa pagsulat pag-usab.

Ang internal nga redirection mao ang pinakasimple nga pananglitan sa mod_rewrite. Kung gusto nimo i-redirect ang tanan nga mga hangyo para sa default.aspx sa index.html, idugang ang mosunod nga linya (nailhan usab nga usa ka lagda sa pagsulat pag-usab) ubos sa RewriteEngine sa:

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

ug ayaw kalimti nga i-restart ang Apache aron ang mga pagbag-o mahimong epektibo.

Mahimong magamit kini kung ang imong site orihinal nga gidisenyo gamit ang ASP ug pagkahuman giusab sa yano nga HTML5. Ang mga search engine adunay .aspx file nga ma-index apan kana nga file wala na.

Niana nga kaso, kinahanglan nimo nga mangita usa ka paagi aron ma-redirect ang hangyo aron ang imong umaabot nga mga bisita dili modagan sa usa ka panid sa sayup. Sa pagsulay, maghimo kita og yano nga HTML file nga ginganlag index.html sulod sa /var/www/html nga adunay mosunod nga mga sulod:

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

Ang mga karatula ug dolyar nga mga timaan maoy hinungdan nga ang regular nga ekspresyon motakdo sa bisan unsang pisi nga nagsugod sa /default ug matapos sa .aspx, matag usa.

Karon ilunsad ang imong browser ug itudlo kini sa 192.168.0.100/default.aspx. Kung ang mga butang moadto sama sa gipaabut, ang Apache kinahanglan nga magsilbi sa index.html hinoon.
Bisan pa, makita gihapon sa end user ang default.aspx sa address bar hinungdan nga ang pagbag-o mahimong hingpit nga transparent:

Kung gusto nimo nga ang URL sa address bar magpakita nga ang server nagsilbi gyud kini index.html imbes nga panid nga ginganlag default.aspx, idugang ang [R, L hangtod sa katapusan sa lagda sa pagsulat pag-usab sama sa mosunod:

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

Dinhi [R,L] ang duha ka opsyonal nga mga bandila nga nagpakita nga ang usa ka kompleto nga HTTP redirect kinahanglan i-isyu ngadto sa browser (R) ug nga walay dugang nga mga lagda ang kinahanglan nga iproseso:

Timan-i kung giunsa gipakita karon sa address bar ang index.html, sama sa gipaabut, imbes nga default.aspx sama sa gibuhat kaniadto.

Niining artikuloha among gipasabot kon unsaon paggamit ang mod_rewrite sa paghimo sa internal nga redirection. Pagbantay alang sa sunod nga post diin kita makakat-on unsaon pag-redirect sa usa ka kapanguhaan nga gibalhin sa laing server, ug unsaon pagsulat pag-usab sa mga bandera.

Sama sa kanunay, ayaw pagduhaduha sa paggamit sa porma sa komento sa ubos kung adunay ka mga pangutana o feedback bahin sa kini nga artikulo. Kami nagpaabut nga makadungog gikan kanimo!