2017-01-14 5 views

答えて

0

既に動作している既存のURLを破棄したくないため、これは難しいことがあります。

Apacheを使用している場合は、いくつかの名前ではないそれぞれのコントローラーを除外するよう注意してmod_rewriteルールを設定できます。

また、ベースコントローラにremap methodを作成することもできます。

class Welcome extends CI_Controller 
{ 
    public function _remap($method) 
    { 
     echo "request for $method being handled by " . __METHOD__; 
    } 
} 

あなたが要求した$方法を調べたり、おそらくあなたが何をしたいのかを決めるために$ _SERVER [「REQUEST_URI」]を見て、そのメソッドのロジックを書くことができます。これは整理するのがやや難しいかもしれませんが、おそらく開始するには良い方法です。

これらのURLを他のURLと区別するためには、routing functionality of codeigniterを使用し、routes.phpファイルでパターンマッチングルールを定義して、それら。

私は、default_controllerがこれの要素になると信じています。 controller :: methodクラスに実際に対応するすべてのコントローラ/メソッドの状況は、そのcontroller ::メソッドで処理する必要があります。一致しないこといずれかが、私は信じて、あなたのdefault_controllerに割り当てられます。

$route['default_controller'] = 'welcome'; 
1

あなたが使用することができますCodeIgniterの組み込みのルーティング、ファイルroute.phpがあなたのconfigフォルダにあります。

あなたが追加することができますが

$route['alicia'] = 'welcome/index/something'; 
$route['alicia/:any'] = 'welcome/index/someotherthing/$1'; 

を、あなたのコントローラでは、例えばwelcomeあなただけのような関数を作成:routing上とurlhelper

public function index($page = null){ 
    if($page=='something'){ 
    // do what you need to do, for example load a view: 
    $this->load->view('allaboutalicia'); 
    } 
    elseif ($page=='someotherthing'){ 
     // here you can read in data from url (www.example.com/alicia/2017 
     $year=$this->uri->segment(2); // you need to load the helper url previously 
    }else{ 
    // do some other stuff 
    } 
} 

ドキュメント

コメントの後編集:あなたのURIセグメントは、ユーザー名のように、変数を表現する場合には

、その後、あなたはwww.example.com/user/aliceのようなURIスキームを使用してのようにあなたのルートを作成する必要がありますあなたのコントローラで、その後

$route['user/:any'] = 'welcome/index/user'; 

welcome

public function index($page=null){ 
    if($page=='user'){ 
    // do what you need to do with that user 
    $user=$this->uri->segment(2); // you need to load the helper url 
    } 
    else{ 
    // exception 
    } 
} 
+0

このルーティング方法では、ルーティングする必要のある各名前に個別のルールが必要です。わかりませんが、OPが指定した任意の名前に対して機能するものを探していると感じました。 twitter.com/usernameのような並べ替え –

関連する問題