Actions

URL Unaofaa kwa Mashini ya Kutafuta (SEF URLs)

From Joomla! Documentation

This page is a translated version of a page Search Engine Friendly URLs and the translation is 100% complete.

Other languages: català 23% • ‎English 100% • ‎español 100% • ‎français 100% • ‎Bahasa Indonesia 100% • ‎日本語 57% • ‎Nederlands 100% • ‎Kiswahili 100%

URL Unaofaa kwa Mashini ya Kutafuta (SEF), kuweza kusomeka na mtu yoyote au clean URLs ni ma URL yote ambayo yanaweza kusomeka na mtu yoyote na mashini za kutafuta, kwa sababu yanaeleza njia za kila ukurasa halisi kwa kila namna. Tangu toleo 1.5, Joomla! ina uwezo wa kutengeza na kuchambua URL na fomati zozote, hatakama ni SEF URL. Hii haita tegemea na seva ambayo unarekebisha URL, kwa hivyo itafanya hatakama Joomla! inaendesha kwa seva nyingine zaidi ya Apache ilio na moduli wa mod_rewrite. SEF URL zitafuata patani fulani za kudumu, lakini mtumiaji anaweza kufafanua maandishi mafupi ya maelezo (alias) kwa kila kitengwa cha URL.

Ndani, ni sehemu ya kawaida ya SEF URL (ni sehemu baada ya jina la kikoa) linaitwa njia (route). Usindikaji na utengezaji wa SEF URL huu unajulika kama kuruta (routing), na kodi inayohusika inaitwa ruta (router).

Mfano mzuri wa kuruta ni URL wa makala "Karibu kwa Joomla!" katika data za sampuli

  • Bila ya kuwasha SEF URL, URL ni http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50
  • Ukiwasha SEF URL na ukizima mod_rewrite, ni http://www.example.com/index.php/the-­news/1-­latest­-news/1­-welcome­-to­-joomla
  • Ukiwasha SEF URL pamoja na mod_rewrite, ni http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla

URL unaofaa kwa mashini ya kutafuta (SEF URL) unaweza kuamilishwa kwa kuwashwa chaguo la URL Unaofaa kwa Mashini ya Kutafuta (SEF URL) katika Usanidi wa kidunia. Chaguo hili la difoti ni tangu Joomla! 1.6. Angalia Kuwezesha URL Unaofaa kwa Mashini ya Kutafuta (SEF URL) kwa maelezo zaidi.

Contents

FAQs

Nambari katika URL zinamaanisha nini?

Ni kulinganisha URL wa zamani na URL mpya ndio utaona nambari za zamani za URL,

http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50

Na pia kwa URL mpya ni:

http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla

Nambari hizi ni za maparamita yanayohitajika kwa Joomla! kuweza kupata URL wa ndani na kuonyesha kurasa unazotaka kuona. (Kwa kesi hii, nambari za kwanza ni kitamulisho cha jamii, nambari za pili ni kitambulisho cha makala.)

Hakuna index.php kwa URL tena. Unaweza kufuta faili hii sasa?

Sio! URL pengine hauna index.php tena, lakini ndani ya mod_rewrite utakuelekeza kwa njia pekee kabla ya ku kuonyesha wewe.

Ni nini thamani ya Jina bandia? Na ina tengezwa vipi?

Jina bandia limeorodheshwa chini ya eneo la kichwa cha Makala, Majamii, Vitu vya Menyu na Sehemu. Joomla! itakutengezea moja kwa moja majina ya bandia yako. Matengezaji ya bandia yanaanza na kitchwa. Maherufi makubwa yote yatabadilishwa kuwa maherufi madogo. Nafasi na herufi maalum haziruhusiwi katika URL; zitabadilishwa kwa madashi

Nataka kutaja thamani yangu kwa jina bandia.

Ikiwa hupendi jina bandia lililopeanwa na Joomla!, unaweza kuweka thamani unazopendelea katika eneo hili. Wengi wanaamini kuwa kutumia maneno muhimu mazuri yatasaidia uboreshaji kwa mashini ya kutafuta (search engine optimisation, SEO). Unaweza kufanya hivi kwa kuongeza haya maneno muhimu katika kichwa chako na kuruhusu Joomla! kutengeza jina bandia, ama kwa kutengeza jina bandia wewe mwenyewe.

Ni jinsi gani jina bandia linatumika katika URL?

Kwa kitu cha menyu, Joomla! inatumia jina bandia kama plagi. Kudhani kuwa unatima machaguo mawili ya kwanza kwa SEF URL na untatengeza kitu cha menyu kinaitwa Mazao. URL wako utakua ni mfano.com/mazao.

Joomla! pia inatumia mathamani ya msingi ya funguo za data ndani ya URL kwa kusaidia ruta kurambaza katika ukurasa wa sawa. Kuendela na mfano wa yaliopita, ikiwa kitu chako cha menyu cha Mazao kilikuwa kwa makala/blogi ya jamii, kiungo kwa Kichwa cha Makala na/au kiungo cha Soma Zaidi chako kitakuwa na sehemu tatu.

  • URL wa kitu cha menyu - mfano.com/mazao;
  • Na funguo ya msingi kwa Jamii na Jina Bandia la Jamii - 32-matunda;
  • Na funguo ya msingi kwa Makala na Jina Bandia la Makala - 1-tufaha;

URL kamili ni: http://mfano.com/mazao/32-tunda/1-tufaha

Ni vipi naweza kuwachana na nambari ndani ya SEF URL?

Nambari ndani ya SEF URL zinahitajika na ruta ya Joomla! kwa kujua ni vipi kuelekeza trafiki ya wavuti. Baadha ya mawazo ya ruta ni utulivu, maplugin rahis ya mkono wa tatu yanaweza kuendelezwa kwa kuongeza uwezo kwa kuruhusi machaguo zaidi. Wakati huo, kuna uwezekano nambari kutolewa kutoka kwa URL.

Mafomati ya njia na ufudi wa kuruta

Sehemu hii inaeleza utaratibu wa kuruta na kiini cha Joomla! (umejengwa ndani). Ukiruta viendelezo, unaweza kubadilisha namna ya tengeza manjia katika mfumo wako.

Fomati za njia

Kueleza undani wa utaratibu wa kuruta wa Joomla!, nilazima kwanza tuelewe ya ndani na ni vipi tunaitisha njia. Kudhani kuwa Joomla! imesakinishwa katika http://mfano.com/wavuti/kwanza/. Njia ya usakinishaji ya kawaida inaitwa URL wa kimsingi. Mfano unaowezekana kwa URL ni http://mfano.com/wavuti/kwanza/mazao/32-tuna/1-tufaha. Sehemu ya kwanza ya URL huu ni URL wa kimsingi, na isipokuwa Joomla! haku ruta komponenti yoyote inaweza kutengeza URL na sehemu ya kwanza tofauti. Sehemu ya pili, mazao/32-tuna/1-tufaha, ni njia yenye vipande vitatu.

Kipande cha kwanza cha njia, ya ma URL ya kawaida, ni jina bandia la kitu cha menyu. Inasema kuwa SEF URL utarutwa kupitia hiki kitu cha menyu. Vipande vyote vinaamuwa na ruta ya komponenti ambayo inapeana aina ya kitu cha menyu. Kwa mfano, aina ya kitu cha menyu Jamii - Blogi inapeanwa na komponenti ya Yaliomo, na kwa hivyo ruta ya komponenti hii ina mamlaka kwa kutengeza na kupambua vipande vilivyobaki.

Pia inawezekana (kwa viendelezo) kuuliza mfumo kwa kutengeza njia bila ya kuleta kitu cha menyu kwa kupitia njia. Kwa kesi hiyo, kawaida mfumo utaamua kutengeza njia maalum ambayo ina neno komponenti kama kitengwa cha kwanza. njia hizi zinatengezwa kwa kutumia fomati ya kudumu: jina la komponenti (bila com_) linatumika kama kitengwa cha pili na maparamita yoyote kama vitengwa vingine.

Mipaka

Ni muhimu kukumbuka kuwa kutengeza kitu cha menyu ni njia pekee wa mtumiaji wa Joomla! kufafanua njia ambayo inafika kwa komponenti maalum. Kwa vyovyote, inavyowezekana kutengeza njia ambayo haionyeshi wavuti (ndani ya menu). Mbinu na kila mara ni kutengeza kitu cha menyu ndani ya menyu hakionekani popote. Kwa kawaida, menyu hii inaitwa menyu ya kujificha.

Aya ya yaliopita inadokeza kuwa haitawezekana kuweka komponenti moja kuwa na mamlaka ya shuguli ya njia zote. Kwa mfano, haitawezekana kubayana kuwa URL http://mfano.com/jinabandia utaonyesha kitu cha Yaliomo na jina bandia jinabandia, ambapo jinabandia linaweza kuwa neno lolote. Ikiwa unatakiwa kufanya hivi kwa idadi chache za makala, unaweza kutengeza kwa mkono vitu vya menyu kwa hivi. Vinginevyo, unatakiwa uwe na kiendelezo kinachopitia.

Njia za kiufundi sio urahisi wa watumiaji kuwa wakati mwengine wanaweza kuhitaji. Kwa upande mwegine, kuna faida moja kubwa: itapunguza utandu wa nafasi za njia (njia ambazo ungeelekeza kwa kurasa mbili tofauti). Kwa njia ya kitengwa cha kwanza, kila mara kwa kitu cha menyu cha jina bandia, mfumo utajua mara moja kuwa ni makomponenti gani lazima ya changanuliwe kwa kuruta.

Maelezo ya utekelezaji

Kushugulika na Njia

Sehemu hii inaeleza utekelezaji wa kupanga njia. Ikiwa wewe ni muendelezaji wa komponenti, angalia Kusaidizi SEF URL katika komponenti yako.

Njia za Joomla zinaongezwa na zinatatuliwa kwa darasa la JRouter. Darasa hili la komponenti linaonekana katika mzizi wa komponenti inayo fanya kazi hivi sasa (specified in the option parameter in the query string) na pamoja na router.php Saraka ya faili ya mzizi wa komponenti. Na itaita kazi moja kutoka kwa mbili, kazi moji ni ya kutengeza URL wa SEF na nyengine ni kutafsiri URL wa SEF.

Darasa la JRouter limeandikwa na Joomla CMS katika /includes/router.php. Katika faili hii ni kutengeza na kuchanganua kazi zilizoandikwa kwa makini, na kupambua ma URL ya Joomla ya CMS.

Faili ya router.php katika kila komponenti (kwa mfano, /components/com_content/router.php) lazima ziwe na kazi mbili zifwatazo:

  • ContentBuildRoute – hii inatengeza SEF URL
    • Maparamita
      • $query – hii ni array (na jina) yenye mageuzo ya querystring
    • Marudisho: array ya kitengwa ambacho kila kitengwa kimetengwa kwa herufi '/' ambazo baadaye zitaingilia pamoja na kutengeza URL halisi (vitu katika array si lazima viwe na herufi '/')
  • ContentParseRoute – hii itatafsiri SEF URL
    • Maparamita
      • $segments - Hii ni array ambayo iwe na kitengwa cha URL ulio ombwa.
    • Marudisho: jina => array ya thamani ya mageuzo ya querystring ambapo kiungo kinaelekeza

Plugin ya SEF

Plugin ya Joomla ya Mfumo wa SEF unarithi JPlugin na unaelekeza kazi ya onAfterRender(). Katika kazi hii, mwili wa jibu, ambao utatumwa katika kisakuzi, utakachotowa kwa kutumia JResponse::getBody(). Tena mwili wa jibu utatafutwa kwa viungo vyenye /index.php..., na vitabadilishwa na URL ulio sahihi wa SEF kwa kuitwa JRoute::_(url).

JRoute inajenga SEF URL kwa kupeana amri kwa jambo la JRouter na kuomba ijenge kiungo cha sawa cha URL.

Kushugulisha SEF URL

Kwa difoti, SEF URL zinazoshugulika na kitu cha JRouterSite (kutoka kwa /includes/router.php) na inaita kuito na mwito kwa JApplication::route() ndani ya index.php. Mwito huu unafanya kwa mageuko ya $app mifano ambayo ni ya ukweli ya JSite (kutoka /includes/application.php).

JApplication::route() ina tokeo lisiloharibu katika array ya $_GET. Inamaanisha kuwa JApplication::route() itaweka mageuko ndani ya $_GET kwa kuita JRequest::set() na kuinandika bendera na kuiweka kiuwongo. Kwa hivyo, ikiwa mabadiliko ya jina yataregeshwa kutoka kwa JRouter::route() ambayo tayari yako ndani ya $_GET, haitaweka thamani hii kwa $_GET. Hii itaruhusu kwa njia za kidesturi.

Njia za kidesturi

Joomla itakuruhusu kutengeza mwenyewe njia zako za kiufundi. Kwa kutengeza kiufundi huu, nilazima uwe na plugin ambayo inaandika kazi ya JPlugin::onAfterInitialise(). Tena kazi hii itapambua URL na itatengeza mabadiliko yanayotakiwa katika $_GET kabla ya njia za kawaida za Joomla kufanyika.

Kwa mfano, angalia Kutengeza plugin ya mfumo kwa kuongeza JRouter.