0

CI ベースの Web アプリで次の (基本的な) ルートを設定しています。

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';

コントローラー + '再送信' メソッド:

class Sms extends CI_Controller {
    public function resend($to, $message) {
        // my code
    }
}

論理的に言えば、ルートに適合しないものはすべて、コントローラーresend()内のメソッドではなく 404 ページに送信する必要があります。smsしかし、そうではありません。たとえば、次の URL は正しくリダイレ​​クトされず、同じコントローラーとメソッドに移動します。

http://myapp/sms/resend/uuuu/WhateverMessage

何が問題なのですか?

4

3 に答える 3

0

少し掘り下げた後、特定のcontroller/methodペアに関連するデフォルト ルートが追加されたときに、CI のデフォルト ルーティングが非アクティブ化されないことがわかりました。そうは言っても、URL が route に適合しない場合$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2'、同じ URL がフォールバックとして CI のデフォルト ルーティング メカニズムを介して実行されるため、それでもコントローラーのresendメソッドに移動します。smsこれが起こらないようにするために、SMS の再送信に関連する他のすべてをたどる別のカスタム ルートを追加する必要がありました。これは、他の URL を別のコントローラー + メソッドにリダイレクトします。このコントローラーが存在しない場合、デフォルトの 404 ページが表示されます。したがって、最終的な/config/routes.phpファイルは次のとおりです。

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';
$route['sms/checkoperator/(:num)'] = 'sms/checkoperator/$1';
$route['sms/(:any)'] = 'somewhereovertherainbow';
于 2013-09-30T09:49:30.573 に答える
-1

あなたのルート

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';

URL は有効な番号 [0-9] を指している必要があります

http://myapp/sms/resend/{!!!NUMBER!!!}/WhateverMessage
于 2013-09-30T09:38:07.907 に答える
-2

rout ファイルは単に再ルーティングするためのものだと思います。あなたの URL はルーティング条件に適合しないため、再ルーティングされません! したがって、同じ通常の方法で進みます(この場合は!)

このようなものが機能する可能性があります!

(! :num) /(:any) '] = エラーページ (または存在しないページ)

したがって、数字で始まらないすべてのリクエストは、エラー ページにリダイレクトされます。

構文が間違っている可能性があります。

これはうまくいくでしょう:

$route['sms/resend/[^0-9]/(:any)'] = 'エラーページ'; エラーページを何かに置き換える必要があります;)

于 2013-09-30T09:11:55.883 に答える