Nuair a chlóscríobhann úsáideoir URL ar leith i mbrabhsálaí agus a bhrúnn sé Iontráil, déanann an freastalaí gréasáin a fhaigheann an iarratas seo iarracht an comhad a fháil ar an bhfreastalaí ag an gcosán atá sonraithe san URL. Mura sonraítear aon rud ag an gcosán, osclaítear an comhad innéacs, amhail index.html nó index.php. Mura bhfuarthas aon rud, cuirtear earráid 404 ar ais. Ní bheadh URLanna áille agus éasca le léamh againn mura mbeadh gach rud ag obair mar a oibríonn sé anois. Úsáidtear na seoltaí seo ar go leor suíomhanna. Tá an modúl athscríofa mod apache deartha chun an fhadhb seo a réiteach. Sa treoir seo, breithneoimid conas é a chumasú.
Dá n-oibreodh gach rud mar a thuairiscítear, ansin nuair a osclaítear aon nasc den suíomh seo san eolaire fréimhe ba chóir go mbeadh comhad nó script leis an ainm céanna ón mbarra seoltaí. Ach ní hamhlaidh atá. Agus an URL seo á iarraidh, déanann an freastalaí gréasáin iarracht comhad den sórt sin a aimsiú, ach mura bhfaigheann sé é, in ionad an earráid 404 a thabhairt ar ais, aistrítear an rialú chuig an modúl mod_rewrite, a fhorghníomhaíonn an script index.php do gach URL den sórt sin, ag cur an teaghrán fiosrúcháin chuige i ndiaidh an fhearainn. Ina dhiaidh sin, aimsíonn agus tugann PHP ar ais, bunaithe ar na sonraí seo, an leathanach atá ag teastáil ón úsáideoir.
Chun athscríobh mod a chumasú, rith ordú simplí:
$ sudo a2enmod rewrite
Tar éis an freastalaí gréasáin a atosú:
$ sudo systemctl restart apache
Ní chiallaíonn sé go n-oibreoidh an modúl don suíomh Gréasáin cé go bhfuil sé cumasaithe ag leibhéal freastalaí gréasáin Apache. Chun seo a dhéanamh, ní mór duit é a chumrú sa chomhad .htaccess, agus a shonrú cén script a sheolfar iarratais chuig leathanaigh nach bhfuil ann. Chun go n-oibreoidh an comhad .htaccess, ní mór duit an treoir AllowOwerride: All
a chur leis an rannóg Eolaire den óstach fíorúil.
Mar shampla:
Ansin, mar shampla, i WordPress ní mór duit na línte seo a leanas a chur leis an gcomhad .htaccess:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Cuirtear an cód ar fad sa treoir IfModule, rud a ligeann don chód istigh a bheith curtha i gcrích ach amháin nuair a bhíonn an modúl mod_rewrite cumasaithe, nó déantar neamhaird de na línte seo. Cumasaíonn an treoir RewriteEngine On an modúl don eolaire reatha. Ansin, ag baint úsáide as RewriteBase, sonraítear go gcaithfear an líne iomlán tar éis an fhearainn a chur ar aghaidh chuig an script. Ansin tagann na rialacha RwriteRule lena gcoinníollacha RewriteCond, a chuirtear i gcrích go docht seicheamhach.
Deir ceann de na rialacha RewriteRule ^index.php$ - [L]
má tá index.php sa URL, gur cheart an URL a athscríobh go /. Sa léiriú rialta seo, sonraítear an líne iomlán, agus cuirtear slais chúltaca as an ponc. Ciallaíonn an bhratach [L]
mura gcomhlíonann an URL an riail seo, nach ceart na rialacha seo a leanas a sheiceáil. Tar éis an riail seo a fhorghníomhú, déanfar an URL a athscríobh agus ceapfaidh an freastalaí gréasáin gur fhaigheadh sé iarratas ar /, tosóidh anailís na rialacha ón tús agus an uair seo comhlíonfaidh sé an riail dheireanach.
Baineann coinníollacha RewriteCond le gach riail ina dhiaidh sin. Mar sin, tá RewriteCond %{REQUEST_FILENAME} !-f
agus RewriteCond %{REQUEST_FILENAME} !-d
againn a cheadaíonn an riail dheireanach a fhorghníomhú ach amháin mura comhad nó fillteán an URL. Athsheolann an riail dheireanach gach rud chuig an script ./index.php.
Mura bhfuil tú in ann na socruithe mod_rewrite a dhéanamh amach, is fiú breathnú ar a bhfuil ag tarlú taobh istigh den fhreastalaí gréasáin le linn d’athsheoltaí. Chun seo a dhéanamh, cuir an líne seo a leanas le cumraíocht óstach fíorúil an tsuímh.
Mar shampla:
$ sudo vi /etc/apache2/sites-available/001-texts.conf LogLevel warn rewrite:trace4
Ansin sa chomhad loga, atá tugtha sa treoir ErrorLog, feicfidh tú gach iarracht a rinne an freastalaí gréasáin an URL a athrú de réir do rialacha agus beidh tú in ann a thuiscint cad atá á dhéanamh agat mícheart. Sa treoir seo, bhreithníomar conas athscríobh mod Apache a chumasú, chomh maith le conas a oibríonn sé ar fad agus conas earráidí a lorg.