2016-04-28 38 views
0

什麼是最簡單的方式來添加.html,並使其工作兩種方式?Laravel附加.html路由(也有沒有.html的工作)

example.com/about - > works!

example.com/about.html - >作品!

我可以添加「.html」的路線,但它不工作沒有。

Route::get('about.html', function() { 
return 'About page'; 
}); 
+1

你應該對同一內容使用兩個不同的URI。搜索引擎會將其視爲重複的內容,並相應地對您的網站進行排名。寧可選擇保留它,或丟棄它。 –

+0

謝謝邁克。我的問題是,我有一個受歡迎的排名很高的網站,目前與擴展工作和擴展。我現在正在Laravel寫這個網站。如果我強制使用301重定向的.html,那麼需要在.htaccess而不是Laravel中發生? – user1040259

+1

您還可以使用規範網址來確定您的網頁的原始來源,並避免搜索引擎出現此類問題(並且仍然使用您的網頁,但不包括擴展名) – zorx

回答

2

試試這個:

Route::get('about{extension}', function() { 
    return 'About page'; 
})->where('extension', '(?:.html)?'); 

您還可以使用RouteServiceProvider趕分機,如果您有需要這種模式(感謝@Mike)許多網頁:

//app/Providers/RouteServiceProvider.php 

public function boot(Router $router) 
{ 
    $router->pattern('extension', '(?:.html)?'); 
    parent::boot($router); 
} 

和然後在你的routes.php

Route::get('about{extension}', function() { 
    return 'About page'; 
}); 
+2

你還應該提到,正則表達式可以在服務提供者中定義,以便'where'不必重複... –

+0

完美工作,謝謝! – user1040259