12

10 月の CMS ルーティング ( https://octobercms.com/docs/plugin/registration#routing-initialization )のドキュメントを確認しましたが、何か足りないと思います。プラグイン(「取引」と呼ばれる)コンポーネントとともにいくつかの基本情報をレンダリングする「取引」と呼ばれるページがあります。ページは通常、次の URL に表示されます。

http://www.example.com/deals

ただし、誰かがURLにアクセスした場合にルートを作成したい:

http://www.example.com/deals2

自動的にそれらを元に戻します

http://www.example.com/deals

プラグイン ディレクトリに routes.php ファイルを作成する必要があることはわかっています。しかし、使ってみると

Route::get('/deals2', function()
{
        return View::make('deals');
});

「取引」ビューが見つからないと不平を言っています。私は何を間違っていますか?

さらに、どうすれば私のホームページにルーティングできますか

http://www.example.com

にルーティングします

http://www.example.com/deals
4

2 に答える 2

11

OctoberCMS とそれが基づいている Laravel では、あるルートを別のルートにリダイレクトするには、次のようにします。

// Redirect /deals2, /deals3, ... to /deals
Route::get('{dealSlug}', function($dealSlug) {
    return redirect('deals');
})->where('dealSlug', '^deals[0-9]+');

// Redirect homepage to /deals
Route::get('/', function() {
    return redirect('deals');
}

最初のルートは、正規表現制約のあるルート パラメーターを使用/dealsし、数字で始まり数字で終わるすべてのリクエストをルートにリダイレクトします/deals。つまり/deals1/deals2/deals3、 などを にルーティングし/dealsます。

2 番目のルートは、ホームページを にリダイレクトします/deals

もちろん、リダイレクトには追加のリクエストがかかります。それをしたくない場合は、Apache または Nginx でリダイレクトを行うことができます。

あなたのコメントによると、リダイレクト/deals[any-number]/[anything]したい場合は、オプションのルートパラメーターを最初のルートに/deals/[that-same-anything]追加します。それは次のようになります。

// The new first route
Route::get('{dealSlug}/{extra?}', function($dealSlug, $extra = '') {
    return redirect('deals/' . $extra);
})->where('dealSlug', '^deals[0-9]+');

もちろん、その/deals/[anything]ルートが存在しない場合は、404 が返されます。

于 2016-02-16T19:46:51.860 に答える
1

Route::get('/deals2', function(){return Redirect::to('/deals')});追加のリクエストを犠牲にしてブラウザをリダイレクトするものを試してください 。

于 2016-02-16T19:37:59.960 に答える