2011-02-03 86 views
2

我目前運行一個網站,我想讓人們能夠製作自己的網址。例如,這裏是我的網址: http://www.hikingsanfrancisco.com/hiker_community/hiker_public_profile.php?community_member_id=2創建虛榮URL

你會發現,它僅僅是由id命名的,這對於SEO來說並不感興趣,對於SEO來說也不好。

理想情況下,我希望我的網站成員在URL中也有他們的名字。這通常是如何完成的?所以在我的情況下,它會是這樣的: http://www.hikingsanfrancisco.com/alex-genadinik並且隱藏了id。

這可能嗎?任何意見,將不勝感激!

謝謝, 亞歷克斯

回答

3
+0

我認爲在那個線程中,它們使事情過度複雜化。如果您可以將虛榮URL作爲該實體的其中一個字段放入數據庫中,該怎麼辦?無論如何,你將會從db中獲取東西,所以不妨取回虛度URL並在那裏重定向。你怎麼看? – Genadinik 2011-02-03 16:50:00

+0

有很多方法來剝皮貓 - 從數據庫中獲取東西並返回虛榮URL它是基本的路由器,框架變得複雜,你只需要知道它們是如何工作和使用全部或部分完成工作 - 你的工作 – bensiu 2011-02-03 17:25:07

2

Code Igniter是一個偉大的MVC框架,它提供了配置的衍生路由,可以很容易地被配置爲通過一個共同的控制器,其中內容發送所有請求可以動態地從數據庫中拉出並渲染。

以下是基本路由規則的示例,該規則排除了對用戶,學生和課程的請求,但將所有其他請求路由到公共內容控制器。

所以,如果你要求http://mydomain.com/hiking-and-camping-info,該URL將被解析,並遠足和露營,信息會在數據庫中擡起頭來,相關內容被撤下。

路由配置:

$route['^(?!lessons|students|users|content).*'] = 'content'; 

和內容控制器然後抓起URL段和查找匹配的內容並將其裝入:

class Content extends Controller { 

    function __construct() { 
     parent::Controller(); 
     $this->load->model('Content_model', 'content'); 
    } 

    function index() { 
     $content_url = $this->uri->segment(1); 
     $data['content'] = $this->content->get_content_by_name($content_url); 
     $this->load->view('content', $data); 
    } 
} 
2

通常,這是通過使用一個htaccess文件的完成在mod_rewrite(大多數Linux服務器)的服務器上。一個例子可能是這樣的:

Options -Indexes 
RewriteEngine On 
RewriteRule ^([0-9a-zA-Z\-]+)$ $1.php 
RewriteRule ^/(alex[\-]genadinik)$ /hiker_community/hiker_public_profile.php?  community_member_name=$1 

這意味着你的hiker_public_profile.php腳本需要接受「亞歷克斯 - genadinik」作爲$ _GET變量「community_member_name」,然後通過名稱來查詢數據庫,而不是ID的。

因此,您需要將上述代碼保存在名爲「.htaccess」的文件中,然後將其上傳到您網站的根目錄。學習正則表達式被推薦。