2012-02-24 18 views
4

管理ルートと一致しないルートを "イベント"コントローラに送信したいと思います。これはかなり一般的な要件であると思われ、大雑把な検索では、similarquestionsのすべての種類がスローされます。Codeigniter route regex - 'admin'以外の文字列に一致

解決策は、私が理解するように、正規表現で否定的な先読みを使用しているようです。だから私の試みは次のようになります:

$route['(?!admin).*'] = "event"; 

です。そうですね。私の "イベント"コントローラに管理者以外のリクエストを送信しますが、一致した実際の文字列を渡す必要があります:/my-new-event//event/my-new-eventにルーティングされます/

私が試した:

$route['(?!admin).*'] = "event/$0"; 
$route['(?!admin).*'] = "event/$1"; 
$route['(?!admin)(.*)'] = "event/$0"; 
$route['(?!admin)(.*)'] = "event/$1"; 

...といくつかの他のますますランダムと絶望的な順列を。すべて404ページになります。

一致する文字列をコントローラに渡す正しい構文は何ですか?

ありがとうございました:

答えて

9

私はあなたが "ネガティブルーティング"をすることはできません。

しかし、ルートには次のような順序があります。「ルートは定義されている順番で実行されます。高いルートは常に低い優先順位よりも優先されます。」私は最初に私の管理者を行い、次に何か他のものをやります。私はあなたの管理者のパスは次のように見ていると仮定した場合

"/ adminが/ ..." 私は示唆している:

実際に作業を行い
$route['admin/(:any)'] = "admincontroller/$1"; 
$route['(:any)'] = "event/$1"; 
+0

、感謝を。奇妙なことに、マッチした文字列は負のマッチングで渡されませんが、これは回避策として機能します。 – Wintermute

関連する問題