會有幾個高調的鏈接,客戶集中精力,例如:如何在我的默認控制器上設置Laravel 3路線以獲得焦點頁面?
- 聯繫我們@ domain.com/home/contact
- 關於服務@ domain.com/home/service
- 定價@ domain.com/home/pricing
- 如何使用@ domain.com/home/how_it_works
類似的東西。我想從URL中隱藏家控制器,所以客戶只看到/contact/,而不是/home/contact/。同樣的,/定價/不/家庭/定價/
我知道我可以設置一個控制器或每個專題頁面的路線,但他們會看,除了內容相同的我想從數據庫中提取,我寧願讓我的代碼保持乾爽。
我設置了以下路線:
Route::get('/about_us', '[email protected]_us');
Route::get('/featured_locations', '[email protected]_locations');
這工作得很好,但恐怕SEO麻煩的,如果我有在URL中的控制器的鏈接重複的內容。 (我不計劃上同時使用,但我已經知道做笨事。)
所以後來做出的路線這樣的:
Route::get('/about_us', '[email protected]_us');
Route::get('/home/about_us', function()
{
return Redirect::to('/about_us', 301);
});
Route::get('/featured_locations', '[email protected]_locations');
Route::get('/home/featured_locations', function()
{
return Redirect::to('/featured_locations', 301);
});
而且現在我有一個重定向。這感覺很愚蠢,但它似乎以我想要的方式工作。如果我使用較短的URL加載頁面,則會加載我的內容。如果我嘗試訪問更長的網址,我會重定向。
它只適用於大約8或9個特殊鏈接,所以我可以輕鬆管理路線,但我覺得必須有一個聰明的方法來做到這一點。
這是一個甚至PHP的問題,或者這是一個.htaccess/web.config的問題?
我用這個重定向方案創建了什麼。聰明人如何做到這一點?我一直在尋找兩個小時,但找不到一個術語來描述我在做什麼。
有沒有內置到laravel 4中來處理這個問題?
UPDATE:
這是我嘗試實現其中一個答案。這是不是工作,我不知道我做錯了什麼。
應用/ routes.php文件
Route::controller('home');
Route::controller('Home_Controller', '/');
(你可以看到編輯歷史,如果你真的想看看一些斷碼)
現在域。COM/AboutYou和domain.com/aboutUs正在返回404但domain.com/home/AboutYou和domain.com/home/aboutUs仍在恢復,因爲他們應該。
最後編輯
我複製一個想法從PongoCMS routes.php(這是基於Laravel 3),我看到他們使用的過濾器來得到任何URI段,並嘗試建立一個CMS頁面。
See my answer below using route filters。這種新方法不要求我註冊的每個特殊的路由(好),但不會放棄重定向到規範(壞)
如果有人想出更好的答案,我會將其打開幾天。 – MrChrister
這看起來像Laravel 3代碼,非常混亂, - 或者是來自Pongocms的? – Richard
@理查德 - 你是完全正確的。看看我知道多少。我正在研究生產的東西,閱讀alpha文檔。 – MrChrister