2015-11-23 177 views
0

我有一個房地產網站,在笨我的鏈接名稱是:笨更改URL路由

htp://examplesite(dot)com/property/31/en/property_title

我想取代它:

htp://examplesite(dot)com/my-custom-slug.htm

htp://examplesite(dot)com/property_title

兩種方式都可以。我的路線是:

$route['default_controller'] = "frontend"; 
$route['404_override'] = 'frontend'; 

/* Custom routing */ 
$route['admin'] = 'admin/dashboard'; 
//$route['secret'] = 'admin/dashboard'; 

// To change property->listing in uri 
$route['listing/(:num)/(:any)/(:any)'] = "property/$1/$2/$3"; 
$route['listing/(:num)/(:any)'] = "property/$1/$2"; 

這種情況下最好的方法是什麼?

我知道有一個可能的解決方案是:

添加

$配置[ 'listing_uri'] = '上市';

不是增加:

在 '應用程序\設置\ routes.php文件'

後:

$route['listing/(:num)/(:any)/(:any)'] = "property/$1/$2/$3"; 
$route['listing/(:num)/(:any)'] = "property/$1/$2"; 

添加也:

$route['changed/(:num)/(:any)/(:any)'] = "property/$1/$2/$3"; 
$route['changed/(:num)/(:any)'] = "property/$1/$2"; 

,但有什麼辦法刪除'上市',只看到乾淨的網址(爲了更好的SEO目的)??

回答

2

歡迎,幸運的是,你的問題不是太大:)

也許有產權前一個金屬塊,使該解決方案有點更具可擴展性:

$route["listing/(:any)"] = "property/view/$1"; 

瀏覽器然後指向yoursite.com/listing/some_slugyoursite.com/listing/12

您將需要有一個slug與每個屬性關聯,否則您可以使用id,並在視圖函數中檢索基於slug或id參數的屬性。

如果您不想包含listing/,嘗試創建其他路線時可能會遇到問題。

+0

我只是寫了同樣的東西,但後來你發佈在我面前:-) – cartalot

+0

我知道有一個解決方案來添加:$ config ['listing_uri'] ='listing';比添加$ route ['changed /(:num)/(:any)/(:any)'] =「property/$ 1/$ 2/$ 3」; $ route ['changed /(:num)/(:any)'] =「property/$ 1/$ 2」;但我想刪除列表,並只看到examplesite(dot)com/custom_slug.htm有沒有什麼辦法? – Fuente

+0

我不確定我是否理解你的意思,你能否詳細說明一下?您可以使用上面提到的解決方案而不使用列表部分,如果您有任何其他特定路由,只需在配置文件的此路由之前添加它即可,因爲codeigniter會自上而下地解釋它。這個問題是你假設你的域名是一個有效的上市後,所以你的驗證只需要聲音,並顯示404,如果上市不存在 – peanut