Search Engine Friendly URLs/sw: Difference between revisions
From Joomla! Documentation
Updating to match new version of source page |
Updating to match new version of source page |
||
| Line 1: | Line 1: | ||
<noinclude><languages /></noinclude> | <noinclude><languages /></noinclude> | ||
<onlyinclude> | <onlyinclude> | ||
<div class="mw-translate-fuzzy"> | |||
URL '''Unaofaa kwa Mashini ya Kutafuta (SEF)''', '''kuweza kusomeka na mtu yoyote''' au [[wikipedia:Clean_URL|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 [[S:MyLanguage/Alias|maandishi mafupi ya maelezo (alias)]] kwa kila kitengwa cha URL. | URL '''Unaofaa kwa Mashini ya Kutafuta (SEF)''', '''kuweza kusomeka na mtu yoyote''' au [[wikipedia:Clean_URL|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 [[S:MyLanguage/Alias|maandishi mafupi ya maelezo (alias)]] kwa kila kitengwa cha URL. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
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)'''. | 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)'''. | ||
</div> | |||
</onlyinclude> | </onlyinclude> | ||
<div class="mw-translate-fuzzy"> | |||
Mfano mzuri wa kuruta ni URL wa makala "Karibu kwa Joomla!" katika data za sampuli | Mfano mzuri wa kuruta ni URL wa makala "Karibu kwa Joomla!" katika data za sampuli | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
* Bila ya kuwasha SEF URL, URL ni <code><nowiki>http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50</nowiki></code> | * Bila ya kuwasha SEF URL, URL ni <code><nowiki>http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50</nowiki></code> | ||
* Ukiwasha SEF URL na ukizima mod_rewrite, ni <code><nowiki>http://www.example.com/index.php/the-news/1-latest-news/1-welcome-to-joomla</nowiki></code> | * Ukiwasha SEF URL na ukizima mod_rewrite, ni <code><nowiki>http://www.example.com/index.php/the-news/1-latest-news/1-welcome-to-joomla</nowiki></code> | ||
* Ukiwasha SEF URL pamoja na mod_rewrite, ni <code><nowiki>http://www.example.com/the-news/1-latest-news/1-welcome-to-joomla</nowiki></code> | * Ukiwasha SEF URL pamoja na mod_rewrite, ni <code><nowiki>http://www.example.com/the-news/1-latest-news/1-welcome-to-joomla</nowiki></code> | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
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 [[S:MyLanguage/Enabling Search Engine Friendly (SEF) URLs|Kuwezesha URL Unaofaa kwa Mashini ya Kutafuta (SEF URL)]] kwa maelezo zaidi. | 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 [[S:MyLanguage/Enabling Search Engine Friendly (SEF) URLs|Kuwezesha URL Unaofaa kwa Mashini ya Kutafuta (SEF URL)]] kwa maelezo zaidi. | ||
</div> | |||
The system behind these SEF URLs by default is very lenient and allows a lot of different URLs to reach the same page. While this is user-friendly, Google doesn't really like that. So starting with Joomla 5.1 there are additional switches in the ''System - SEF'' plugin which enforce a stricter behavior: | |||
* ''Forcibly remove index.php in URL with redirects'': If the site is called with an index.php in the URL, Joomla will now redirect to the page without an index.php with a 301 redirect. From Joomla 6.0 onwards this option will be removed again and the behavior enabled as standard. | |||
* ''Trailing slash for URLs'': This option allows to set and enforce if a URL should have a trailing slash or not. This is also enforce with a 301 redirect if the current URL does not confirm the selected setting. By default the site accepts both. This option is only available when ''Add Suffix to URL'' is disabled. Starting with Joomla 6.0 the default behavior will be to enforce without a trailing slash. | |||
* ''Enforce a suffix by redirect'': When this setting and ''Add Suffix to URL'' is enabled, URLs without a suffix are redirected to their "correct" URL with a suffix with a 301 redirect. Starting with Joomla 6.0 this option will be the standard behavior and the option will then be removed again. | |||
* ''Disallow non-SEF URLs'': Enabling this option means that Joomla will try to build the correct URL from what it understood of the current URL and if the current URL and the one Joomla built itself are not identical, Joomla will redirect to the one it built itself. This means that URLs like ''/component/content/article/42'' or ''index.php?option=com_content&view=article&id=42'' would be correctly redirected to ''/welcome/to/joomla''. This option can create issues in some site setups, so test your site thoroughly after enabling this. | |||
For more information please see [[Enabling Search Engine Friendly (SEF) URLs]]. | |||
== FAQs == | == FAQs == | ||
<div class="mw-translate-fuzzy"> | |||
=== Nambari katika URL zinamaanisha nini? === | === Nambari katika URL zinamaanisha nini? === | ||
Ni kulinganisha URL wa zamani na URL mpya ndio utaona nambari za zamani za URL, | Ni kulinganisha URL wa zamani na URL mpya ndio utaona nambari za zamani za URL, | ||
</div> | |||
<pre><nowiki>http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50</nowiki></pre> | <pre><nowiki>http://www.example.com/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50</nowiki></pre> | ||
| Line 24: | Line 44: | ||
<pre><nowiki>http://www.example.com/the-news/1-latest-news/1-welcome-to-joomla</nowiki></pre> | <pre><nowiki>http://www.example.com/the-news/1-latest-news/1-welcome-to-joomla</nowiki></pre> | ||
<div class="mw-translate-fuzzy"> | |||
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.) | 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.) | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Hakuna <code>index.php</code> kwa URL tena. Unaweza kufuta faili hii sasa? === | === Hakuna <code>index.php</code> kwa URL tena. Unaweza kufuta faili hii sasa? === | ||
Sio! URL pengine hauna <code>index.php</code> tena, lakini ndani ya mod_rewrite utakuelekeza kwa njia pekee kabla ya ku kuonyesha wewe. | Sio! URL pengine hauna <code>index.php</code> tena, lakini ndani ya mod_rewrite utakuelekeza kwa njia pekee kabla ya ku kuonyesha wewe. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Ni nini thamani ya [[S:MyLanguage/Alias|Jina bandia]]? Na ina tengezwa vipi? === | === Ni nini thamani ya [[S:MyLanguage/Alias|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 | 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 | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Nataka kutaja thamani yangu kwa jina bandia. === | === 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. | 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. | ||
</div> | |||
=== | <div class="mw-translate-fuzzy"> | ||
=== 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. | |||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
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. | 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. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
* URL wa kitu cha menyu - mfano.com/mazao; | * URL wa kitu cha menyu - mfano.com/mazao; | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
* Na funguo ya msingi kwa Jamii na Jina Bandia la Jamii - 32-matunda; | * Na funguo ya msingi kwa Jamii na Jina Bandia la Jamii - 32-matunda; | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
* Na funguo ya msingi kwa Makala na Jina Bandia la Makala - 1-tufaha; | * Na funguo ya msingi kwa Makala na Jina Bandia la Makala - 1-tufaha; | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
URL kamili ni: <code><nowiki>http://mfano.com/mazao/32-tunda/1-tufaha</nowiki></code> | URL kamili ni: <code><nowiki>http://mfano.com/mazao/32-tunda/1-tufaha</nowiki></code> | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Ni vipi naweza kuwachana na nambari ndani ya SEF URL? === | === 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. | 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. | ||
</div> | |||
== Mafomati ya njia na ufudi wa kuruta == | == Mafomati ya njia na ufudi wa kuruta == | ||
| Line 57: | Line 99: | ||
=== Fomati za njia === | === Fomati za njia === | ||
<div class="mw-translate-fuzzy"> | |||
Kueleza undani wa utaratibu wa kuruta wa Joomla!, nilazima kwanza tuelewe ya ndani na ni vipi tunaitisha '''njia'''. Kudhani kuwa Joomla! imesakinishwa katika <code><nowiki>http://mfano.com/wavuti/kwanza/</nowiki></code>. Njia ya usakinishaji ya kawaida inaitwa '''URL wa kimsingi'''. Mfano unaowezekana kwa URL ni <code><nowiki>http://mfano.com/wavuti/kwanza/mazao/32-tuna/1-tufaha</nowiki></code>. 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, <code>mazao/32-tuna/1-tufaha</code>, ni '''njia''' yenye '''vipande''' vitatu. | Kueleza undani wa utaratibu wa kuruta wa Joomla!, nilazima kwanza tuelewe ya ndani na ni vipi tunaitisha '''njia'''. Kudhani kuwa Joomla! imesakinishwa katika <code><nowiki>http://mfano.com/wavuti/kwanza/</nowiki></code>. Njia ya usakinishaji ya kawaida inaitwa '''URL wa kimsingi'''. Mfano unaowezekana kwa URL ni <code><nowiki>http://mfano.com/wavuti/kwanza/mazao/32-tuna/1-tufaha</nowiki></code>. 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, <code>mazao/32-tuna/1-tufaha</code>, ni '''njia''' yenye '''vipande''' vitatu. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
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 [[S:MyLanguage/Content|Yaliomo]], na kwa hivyo ruta ya komponenti hii ina mamlaka kwa kutengeza na kupambua vipande vilivyobaki. | 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 [[S:MyLanguage/Content|Yaliomo]], na kwa hivyo ruta ya komponenti hii ina mamlaka kwa kutengeza na kupambua vipande vilivyobaki. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
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 <code>komponenti</code> kama kitengwa cha kwanza. njia hizi zinatengezwa kwa kutumia fomati ya kudumu: jina la komponenti (bila <code>com_</code>) linatumika kama kitengwa cha pili na maparamita yoyote kama vitengwa vingine. | 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 <code>komponenti</code> kama kitengwa cha kwanza. njia hizi zinatengezwa kwa kutumia fomati ya kudumu: jina la komponenti (bila <code>com_</code>) linatumika kama kitengwa cha pili na maparamita yoyote kama vitengwa vingine. | ||
</div> | |||
=== Mipaka === | === Mipaka === | ||
<div class="mw-translate-fuzzy"> | |||
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 [[S:MyLanguage/Menu|menyu ya kujificha]]. | 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 [[S:MyLanguage/Menu|menyu ya kujificha]]. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Aya ya yaliopita inadokeza kuwa haitawezekana kuweka komponenti moja kuwa na mamlaka ya shuguli ya njia zote. Kwa mfano, haitawezekana kubayana kuwa URL <code><nowiki>http://mfano.com/jinabandia</nowiki></code> utaonyesha kitu cha Yaliomo na jina bandia <code>jinabandia</code>, ambapo <code>jinabandia</code> 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. | Aya ya yaliopita inadokeza kuwa haitawezekana kuweka komponenti moja kuwa na mamlaka ya shuguli ya njia zote. Kwa mfano, haitawezekana kubayana kuwa URL <code><nowiki>http://mfano.com/jinabandia</nowiki></code> utaonyesha kitu cha Yaliomo na jina bandia <code>jinabandia</code>, ambapo <code>jinabandia</code> 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. | ||
</div> | |||
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. | 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. | ||
| Line 76: | Line 128: | ||
''Sehemu hii inaeleza utekelezaji wa kupanga njia. Ikiwa wewe ni muendelezaji wa komponenti, angalia [[S:MyLanguage/Supporting SEF URLs in your component|Kusaidizi SEF URL katika komponenti yako]].'' | ''Sehemu hii inaeleza utekelezaji wa kupanga njia. Ikiwa wewe ni muendelezaji wa komponenti, angalia [[S:MyLanguage/Supporting SEF URLs in your component|Kusaidizi SEF URL katika komponenti yako]].'' | ||
<div class="mw-translate-fuzzy"> | |||
Njia za Joomla zinaongezwa na zinatatuliwa kwa [[S:MyLanguage/JRouter|darasa la JRouter]]. Darasa hili la komponenti linaonekana katika mzizi wa komponenti inayo fanya kazi hivi sasa (specified in the <code>option</code> parameter in the query string) na pamoja na <code>router.php</code> 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. | Njia za Joomla zinaongezwa na zinatatuliwa kwa [[S:MyLanguage/JRouter|darasa la JRouter]]. Darasa hili la komponenti linaonekana katika mzizi wa komponenti inayo fanya kazi hivi sasa (specified in the <code>option</code> parameter in the query string) na pamoja na <code>router.php</code> 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. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Darasa la JRouter limeandikwa na Joomla CMS katika <code>/includes/router.php</code>. Katika faili hii ni kutengeza na kuchanganua kazi zilizoandikwa kwa makini, na kupambua ma URL ya Joomla ya CMS. | Darasa la JRouter limeandikwa na Joomla CMS katika <code>/includes/router.php</code>. Katika faili hii ni kutengeza na kuchanganua kazi zilizoandikwa kwa makini, na kupambua ma URL ya Joomla ya CMS. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Faili ya <code>router.php</code> katika kila komponenti (kwa mfano, <code>/components/com_content/router.php</code>) lazima ziwe na kazi mbili zifwatazo: | Faili ya <code>router.php</code> katika kila komponenti (kwa mfano, <code>/components/com_content/router.php</code>) lazima ziwe na kazi mbili zifwatazo: | ||
* ContentBuildRoute – hii inatengeza SEF URL | * ContentBuildRoute – hii inatengeza SEF URL | ||
| Line 89: | Line 146: | ||
*** $segments - Hii ni array ambayo iwe na kitengwa cha URL ulio ombwa. | *** $segments - Hii ni array ambayo iwe na kitengwa cha URL ulio ombwa. | ||
** Marudisho: jina => array ya thamani ya mageuzo ya querystring ambapo kiungo kinaelekeza | ** Marudisho: jina => array ya thamani ya mageuzo ya querystring ambapo kiungo kinaelekeza | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Plugin ya SEF === | === Plugin ya SEF === | ||
Plugin ya Joomla ya ''Mfumo wa SEF'' unarithi <code>JPlugin</code> na unaelekeza kazi ya <code>onAfterRender()</code>. Katika kazi hii, mwili wa jibu, ambao utatumwa katika kisakuzi, utakachotowa kwa kutumia <code>JResponse::getBody()</code>. Tena mwili wa jibu utatafutwa kwa viungo vyenye <code>/index.php...</code>, na vitabadilishwa na URL ulio sahihi wa SEF kwa kuitwa <code>JRoute::_(''url'')</code>. | Plugin ya Joomla ya ''Mfumo wa SEF'' unarithi <code>JPlugin</code> na unaelekeza kazi ya <code>onAfterRender()</code>. Katika kazi hii, mwili wa jibu, ambao utatumwa katika kisakuzi, utakachotowa kwa kutumia <code>JResponse::getBody()</code>. Tena mwili wa jibu utatafutwa kwa viungo vyenye <code>/index.php...</code>, na vitabadilishwa na URL ulio sahihi wa SEF kwa kuitwa <code>JRoute::_(''url'')</code>. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
JRoute inajenga SEF URL kwa kupeana amri kwa jambo la <code>JRouter</code> na kuomba ijenge kiungo cha sawa cha URL. | JRoute inajenga SEF URL kwa kupeana amri kwa jambo la <code>JRouter</code> na kuomba ijenge kiungo cha sawa cha URL. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Kushugulisha SEF URL === | === Kushugulisha SEF URL === | ||
Kwa difoti, SEF URL zinazoshugulika na kitu cha <code>JRouterSite</code> (kutoka kwa <code>/includes/router.php</code>) na inaita kuito na mwito kwa <code>JApplication::route()</code> ndani ya index.php. Mwito huu unafanya kwa mageuko ya <code>$app</code> mifano ambayo ni ya ukweli ya <code>JSite</code> (kutoka <code>/includes/application.php</code>). | Kwa difoti, SEF URL zinazoshugulika na kitu cha <code>JRouterSite</code> (kutoka kwa <code>/includes/router.php</code>) na inaita kuito na mwito kwa <code>JApplication::route()</code> ndani ya index.php. Mwito huu unafanya kwa mageuko ya <code>$app</code> mifano ambayo ni ya ukweli ya <code>JSite</code> (kutoka <code>/includes/application.php</code>). | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
<code>JApplication::route()</code> ina tokeo lisiloharibu katika array ya <code>$_GET</code>. Inamaanisha kuwa <code>JApplication::route()</code> itaweka mageuko ndani ya <code>$_GET</code> kwa kuita <code>JRequest::set()</code> na kuinandika bendera na kuiweka kiuwongo. Kwa hivyo, ikiwa mabadiliko ya jina yataregeshwa kutoka kwa <code>JRouter::route()</code> ambayo tayari yako ndani ya <code>$_GET</code>, haitaweka thamani hii kwa <code>$_GET</code>. Hii itaruhusu kwa njia za kidesturi. | <code>JApplication::route()</code> ina tokeo lisiloharibu katika array ya <code>$_GET</code>. Inamaanisha kuwa <code>JApplication::route()</code> itaweka mageuko ndani ya <code>$_GET</code> kwa kuita <code>JRequest::set()</code> na kuinandika bendera na kuiweka kiuwongo. Kwa hivyo, ikiwa mabadiliko ya jina yataregeshwa kutoka kwa <code>JRouter::route()</code> ambayo tayari yako ndani ya <code>$_GET</code>, haitaweka thamani hii kwa <code>$_GET</code>. Hii itaruhusu kwa njia za kidesturi. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== 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 <code>JPlugin::onAfterInitialise()</code>. Tena kazi hii itapambua URL na itatengeza mabadiliko yanayotakiwa katika <code>$_GET</code> kabla ya njia za kawaida za Joomla kufanyika. | Joomla itakuruhusu kutengeza mwenyewe njia zako za kiufundi. Kwa kutengeza kiufundi huu, nilazima uwe na plugin ambayo inaandika kazi ya <code>JPlugin::onAfterInitialise()</code>. Tena kazi hii itapambua URL na itatengeza mabadiliko yanayotakiwa katika <code>$_GET</code> kabla ya njia za kawaida za Joomla kufanyika. | ||
</div> | |||
''Kwa mfano, angalia [[S:MyLanguage/Creating a System Plugin to augment JRouter|Kutengeza plugin ya mfumo kwa kuongeza JRouter]].'' | ''Kwa mfano, angalia [[S:MyLanguage/Creating a System Plugin to augment JRouter|Kutengeza plugin ya mfumo kwa kuongeza JRouter]].'' | ||
[[Category:Search Engine Friendly URLs/sw|URL Unaofaa kwa Mashini ya Kutafuta (SEF URLs)]] | [[Category:Search Engine Friendly URLs/sw|URL Unaofaa kwa Mashini ya Kutafuta (SEF URLs)]] | ||
Revision as of 05:50, 24 January 2025
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.
The system behind these SEF URLs by default is very lenient and allows a lot of different URLs to reach the same page. While this is user-friendly, Google doesn't really like that. So starting with Joomla 5.1 there are additional switches in the System - SEF plugin which enforce a stricter behavior:
- Forcibly remove index.php in URL with redirects: If the site is called with an index.php in the URL, Joomla will now redirect to the page without an index.php with a 301 redirect. From Joomla 6.0 onwards this option will be removed again and the behavior enabled as standard.
- Trailing slash for URLs: This option allows to set and enforce if a URL should have a trailing slash or not. This is also enforce with a 301 redirect if the current URL does not confirm the selected setting. By default the site accepts both. This option is only available when Add Suffix to URL is disabled. Starting with Joomla 6.0 the default behavior will be to enforce without a trailing slash.
- Enforce a suffix by redirect: When this setting and Add Suffix to URL is enabled, URLs without a suffix are redirected to their "correct" URL with a suffix with a 301 redirect. Starting with Joomla 6.0 this option will be the standard behavior and the option will then be removed again.
- Disallow non-SEF URLs: Enabling this option means that Joomla will try to build the correct URL from what it understood of the current URL and if the current URL and the one Joomla built itself are not identical, Joomla will redirect to the one it built itself. This means that URLs like /component/content/article/42 or index.php?option=com_content&view=article&id=42 would be correctly redirected to /welcome/to/joomla. This option can create issues in some site setups, so test your site thoroughly after enabling this.
For more information please see Enabling Search Engine Friendly (SEF) URLs.
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 '/')
- Maparamita
- 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
- Maparamita
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.