2016-04-28 5 views
0

.htmlを追加して両方の方法で動作させる最も簡単な方法は何でしょうか?ルートを追加する.html(と.htmlなしで動作させる)

example.com/about-> works!

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

".html"をルートに追加することはできますが、これを実行しないと動作しません。

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

同じコンテンツに対して2つの異なるURIを使用するvoid検索エンジンはそれを重複コンテンツとして表示し、それに応じてサイトをランク付けします。むしろそれを保つことを選択するか、またはそれを捨てる。 –

+0

ありがとうマイク。私の問題は、私が普及している非常にランク付けされたサイトを現在持っていて、拡張機能を使っていることです。私は今Laravelにサイトを書いています。 301リダイレクトで.htmlを強制的に実行すると、Laravelではなく、.htaccessで実行する必要がありますか? – user1040259

+1

正規のURLを使用してページの元のソースを特定し、検索エンジンでこのような問題を回避することができます(また、拡張子の有無にかかわらずページを使用します) – zorx

答えて

2

この方法を試してください。

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

あなたはこのパターン(感謝@マイク)を必要とする多くのページがある場合にも拡張をキャッチするRouteServiceProviderを使用することができます。

//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

関連する問題