Who's Online

現在有 317 訪客 在線上
SEF的教學(譯自官方論壇) 列印 E-mail
作者是 站長   
週三, 08 十二月 2004 14:09
文章出處:Mambo官方論壇
原文作者:Emir Sakic(Mambo Core Developer,http://www.sakic.net
譯者:Eddy Chang(http://www.taiwanmambo.com/)

譯註:Search Engine Friendly(簡寫為SEF),即一種讓搜尋引擎更容易搜尋你的網站上的資料的技術。

SEF在Mambo中只能配合Apache使用。這是使用了mod_rewrite這個模組來讓伺服器正確的指向PHP中的檔案邏輯。這裡頭只有三行字在.htaccess檔案中,告訴mod_rewrite的指向的。
要啟用SEF支援:
1) 你必須使用Apache
2) 你必須啟用mod_rewrite(Apache中的設定)
3) 你的伺服器必需允許 .htaccess被覆蓋過
4) 設定$mosConfig_sef= "1"在configuration.php檔案裡(或是用全域設定)
5) 將htaccess.txt重新命名為.htaccess

你會發現sections/content/items會像下面的URLs顯示出來:
http://www.site.com/content/view/5/2/
然後元件的URLs會像這樣:
http://www.site.com/component/optio...ntact/Itemid,3/

疑難排除
如果你遇到了有關SEF的問題,請確認以下的疑難排除步驟:
1) 你必須是在Apache網站平台上執行
要確認這一項,請到Mambo管理後台 > 系統 > 系統資訊。伺服器的類型會列出來在Web Server的後面。SEF在IIS上無法啟動。
2) 你必須啟用mod_rewrite
要確認這一項,請到Mambo管理後台 > 系統 > 系統資訊。點按PHP資訊標籤。往下捲動到你找到Loaded Modules這一行。mod_rewrite應該會列在上面。如果找不著請詢問你的網站主機商是不是有啟用了mod_rewrite。
3) 你的主機必須允許.htaccess覆蓋
要確認這一項,把你的.htaccess檔案清空,然後寫入一個簡單的測試指令,範例如下:

Redirect /google.html http://www.google.com

現在把你的瀏覽器指到http://www.yoursite.com/google.html,如果正確執行的話應該會被重新導向到google.com。
4) 設定$mosConfig_sef= "1"在configuration.php檔案裡
你也可以啟用SEF在 網站 > 全域設定 中。
5) 重新命名htaccess.txt成.htaccess
這可以用FTP程式來作這件事。注意點號是開頭!另外也要注意你不可以在Windows平台上作這件事,不過你可以直接重新命名。

另外你會有疑問怎麼樣讓你製作的CMTs (Components/Modules/Templates)具有符合SEF的效果:
你必須轉換所有在CMTs中的連結成SEF連結。這個是靠稱之為sefRelToAbs()的函式來完成的。
範例:
在你有連結或表單指向的程式碼中:
index.php?option=com_contact&Itemid=$Itemid
現在你只要改寫成這樣:
echo sefRelToAbs("index.php?option=com_contact&Itemid=$Itemid");
就會轉換在相關的URL像這樣:
http://www.domain.com/component/opt...ntact/Itemid,3/
現在mod_rewrite就會指向Apache到index.php和sef.php,然後會有回轉的神奇效果。
這個功能會回復到原來的連結的樣子,如果SEF功能被關閉時,這是對你的CMTs之後都十分安全的作法。

注意SEF是預設被關閉的(OFF),而且如果你是用舊有的方式在執行Mambo時,在沒有啟用SEF時,在任何情況下都不會被改變。請確認你是不是有權 限設定這個,在張貼有關SEF不能用的相關文章時。我會刪除掉沒有確認以上五個步驟的張貼文章。因此:檢查一下你的php資訊,確定你是執行在\r Apache上,以及mod_rewrite模組是被載入的。然後檢查你是不是有重新命名htaccess.txt成.htaccess,再來就是\r configuration.php檔案中的SEF是不是有啟用。

如果你有興趣更進一步加強你的網站的SEF URLs像下面這樣:
http://www.site.com/section/category/item/
可以到這裡看一下SEF advance:
http://www.sakic.net/index.php?opti...ore=sef_advance