0

URL のルーターを含む個人用 MVC フレームワークに取り組んでいます。

現時点では、PagesController と「サイトマップ」ビューがあります。url.com/pages/sitemap/ にアクセスできます

「/info/{page}/」の URL ルートも設定しました。URLに「情報」を含めたい静的ページに対してこれを行いました。これはサイトマップでも機能します。

次に、意図したとおり、/sitemap/ をサイトマップ ページにもマップしました。

/sitemap/ だけを有効なリソースにしたいのですが、他の URL を無効化/リダイレクトする最善の方法は何でしょうか?

4

1 に答える 1

0

それはすべてあなたのルーターの実装に依存します。コントローラで元のURLにアクセスできる場合は、それを比較し、必要に応じてリダイレクトを発行します。

class PagesController {

    function sitemap($request) {
        if ($request->url == '/info/sitemap/')
            $this->response->redirect('/sitemap/');

        //regular processing here
    }
}

編集

ルールが正規表現ベースの場合、「除外」パターンを追加する別のオプションでは、パターン/info/sitemap/と一致しません/info/{page}/

の線に沿った何か:

$router->add(array(
    'url' => '/info/(?<action>.*)/',
    'controller' => 'PagesController',
    'exclude' => '(?:sitemap)',
));
于 2013-03-11T22:31:18.477 に答える