Yadda ake Yin Juyawa ta ciki tare da mod_rewrite a Apache


A cikin wannan labarin da kuma na gaba za mu bayyana yadda ake amfani da mod_rewrite, don taswirar wasu buƙatun HTTP zuwa wasu shafuka a cikin gidan yanar gizon, ko zuwa URL na waje.

A takaice dai, wannan sanannen tsarin Apache zai ba ku damar tura URL zuwa wani, wanda zamu kwatanta ta misalai masu amfani.

NOTE: Misalan da ke ƙasa suna ɗauka cewa kun ɗan saba da Perl Compatible Regular Expressions (PCRE). Tunda wannan batu bai wuce iyakar wannan labarin ba, koma zuwa Perl 5 sigar 24.0 docs don ƙarin cikakkun bayanai akan PCRE.

Kafin a ci gaba, tabbatar an ɗora nauyin sake rubutawa. Ko da yake wannan shine tsohuwar dabi'a a cikin CentOS da makamantansu, a cikin Debian da abubuwan haɓakawa zaku buƙaci loda shi da hannu kamar haka:

# a2enmod rewrite

Saita Apache don Amfani da Module Mod_rewrite

Don sauƙi, bari mu yi amfani da tsoffin rukunin yanar gizon a cikin akwatin CentOS 7 (IP 192.168.0.100) don bayyana yadda ake amfani da mod_rewrite (DocumentRoot: /var/www/html, fayil ɗin sanyi: /etc/httpd/conf/httpd.conf).

Domin Apache yayi amfani da wannan tsarin, ƙara layin mai zuwa zuwa fayil ɗin sanyi:

RewriteEngine on

Yana da mahimmanci a lura cewa wannan tsarin ba za a gaji runduna kama-da-wane a cikin akwati ɗaya ba.

Don haka, kuna buƙatar ƙara RewriteEngine akan kowane mai masaukin baki inda kuke son amfani da ƙa'idodin sake rubutawa.

Juyawa na ciki shine mafi sauƙin misali na mod_rewrite. Idan kana son tura duk buƙatun don default.aspx zuwa index.html, ƙara layin da ke gaba (wanda kuma aka sani da dokar sake rubutawa) ƙarƙashin RewriteEngine akan:

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

kuma kar a manta da sake kunna Apache domin canje-canje su yi tasiri.

Wannan na iya zama da amfani idan an tsara rukunin yanar gizon ku ta hanyar amfani da ASP kuma daga baya aka canza zuwa HTML5 bayyananne. Injunan bincike za su sami lissafin fayil ɗin .aspx amma wannan fayil ɗin baya wanzuwa kuma.

A wannan yanayin, kuna buƙatar nemo hanyar da za a tura buƙatar don kada maziyartan ku masu zuwa su shiga cikin shafin kuskure. Don gwadawa, bari mu ƙirƙirar fayil ɗin HTML mai sauƙi mai suna index.html ciki /var/www/html tare da abubuwan ciki masu zuwa:

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

Alamun kulawa da dala za su sa furcin yau da kullun ya dace da kowane kirtani wanda zai fara da /default kuma yana ƙarewa da .aspx, bi da bi.

Yanzu kaddamar da burauzar ku kuma nuna shi zuwa 192.168.0.100/default.aspx. Idan abubuwa suka tafi kamar yadda aka zata, Apache yakamata yayi amfani da index.html maimakon.
Koyaya, har yanzu mai amfani na ƙarshe zai ga default.aspx a cikin adireshin adireshin yana sa canjin ya zama gabaɗaya:

Idan kana son URL ɗin da ke cikin mashin adireshi ya nuna cewa ainihin sabar tana hidimar index.html maimakon shafi mai suna default.aspx, ƙara [R, L] zuwa ƙarshen dokar sake rubutawa kamar haka:

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

Anan [R,L] tutoci biyu ne na zaɓi waɗanda ke nuna cewa ya kamata a ba da cikakkiyar tura HTTP zuwa mazuruftan (R) kuma kada a sake sarrafa wasu ƙa'idodi:

Lura yadda adireshin adireshin yanzu ke nuna index.html, kamar yadda ake tsammani, maimakon default.aspx kamar yadda ya yi a baya.

A cikin wannan labarin mun bayyana yadda ake amfani da mod_rewrite don yin jujjuyawar ciki. Ku kasance da mu a rubutu na gaba inda za mu koyi yadda ake turawa zuwa wata hanya da aka matsa zuwa wani uwar garken daban, da yadda ake sake rubuta tutoci.

Kamar koyaushe, jin daɗin amfani da fom ɗin sharhi a ƙasa idan kuna da wasu tambayoyi ko ra'ayi game da wannan labarin. Muna jiran ji daga gare ku!