顧客が注目すべき重要なリンクがいくつかあります。たとえば、次のとおりです。
- お問い合わせ @ domain.com/home/contact
- サービスについて @ domain.com/home/service
- 価格 @ domain.com/home/pricing
- 仕組み @ domain.com/home/how_it_works
そのようなもの。URL からホームコントローラーを非表示にしたいので、顧客には/home/contact /ではなく/ contact/のみが表示されます。/home/pricing /ではなく/pricing/と同じ
特別なページごとにコントローラーまたはルートをセットアップできることはわかっていますが、データベースから取得するコンテンツを除いてそれらは同じように見えるため、コードを DRY のままにしておくことをお勧めします。
次のルートを設定します。
Route::get('/about_us', 'home@about_us');
Route::get('/featured_locations', 'home@featured_locations');
これはうまくいきますが、URL のコントローラーとのリンクにコンテンツが重複していると、SEO のトラブルが発生する恐れがあります。(両方を使用する予定はありませんが、私はもっとばかげたことをすることが知られています。)
次に、次のようなルートを作成しました。
Route::get('/about_us', 'home@about_us');
Route::get('/home/about_us', function()
{
return Redirect::to('/about_us', 301);
});
Route::get('/featured_locations', 'home@featured_locations');
Route::get('/home/featured_locations', function()
{
return Redirect::to('/featured_locations', 301);
});
そして今、私はリダイレクトを持っています。ばかげているように感じますが、私が望むように機能しているようです。短い URL でページを読み込むと、コンテンツが読み込まれます。長い URL にアクセスしようとすると、リダイレクトされます。
特殊なリンクが8~9本程度しかないのでルート管理は楽ですが、何か工夫が必要かなと感じています。
これは PHP の問題ですか、それとも .htaccess / web.config の問題ですか?
このリダイレクト スキームで一体何を作成したのでしょう。賢い人はどうやってそれをするのですか?2 時間検索しましたが、自分がしていることを説明する用語が見つかりません。
これを処理するlaravel 4に組み込まれているものはありますか?
アップデート:
これが、答えの1つを実装する私の試みです。これは機能しておらず、何が間違っているのかわかりません。
アプリケーション/routes.php
Route::controller('home');
Route::controller('Home_Controller', '/');
(本当に壊れたコードを見たい場合は、編集履歴を見ることができます)
そして今、 domain.com / AboutYouとdomain.com/aboutUsは 404 を返しています。
最終編集
PongoCMS の routes.php (Laravel 3 に基づく)からアイデアをコピーしたところ、フィルタを使用して URI セグメントを取得し、CMS ページを作成しようとしていることがわかりました。
route filters を使用して、以下の私の回答を参照してください。この新しい方法では、すべての特別なルートを登録する必要はありませんが (良い)、正規ルートへのリダイレクトを放棄します (悪い)。