ユーザーの役割に応じてルートを動的に変更しようとしています。したがって、ユーザーがログインしたときに書き込むキャッシュroutes.phpがあります。とにかく、再ルーティングされないURLが必要です。
今のところ $route['(:any)']='CA/$1';
、どの URL でも問題なく動作します。
最初の URIはログイン コントローラーであり、2 番目の URI は JQgrids によって使用されるコントローラーを含むサブフォルダーであるため、で始まるauth
か、または脇に置いておく必要があるすべての URI が必要です。rest
私はこれを試しましたが、結果はありません:
$route['^(?!auth|rest).*'] = "CA/$1";
編集:@Vlakarados
あなたのルートは現在機能していますが、次の問題があります。
私routes.php
はこのように見えます:
$route['404_override'] = '';
$route['default_controller'] = "auth";
include_once(APPPATH."cache/routes.php");
Auth コントローラーでは、次のことを行います。
class Auth extends CI_Controller {
function Auth() {
parent::__construct();
}
function index()
{
if ($this->ion_auth->logged_in())
{
$this->__checkRoles();
}
else
{
//render the form
}
}
function logout()
{
session_start();
session_unset();
session_destroy();
$logout = $this->ion_auth->logout();
redirect('auth');
}
function __checkRoles()
{
$role=$this->ion_auth->get_group();
$this->save_routes($role);
switch ($role) {
case 'CA':
redirect(base_url()); //this is how I'm redirecting now, because it will route to base_url()/CA (but it won't because first it will route to default_controller which is 'Auth'
break;
case 'CD':
redirect(base_url().'CD'); //this is how I used to redirect,
break;
case 'DV':
redirect(base_url().'DV');
break;
case 'AC':
redirect(base_url().'AC');
break;
case 'Admin':
redirect(base_url().'Admin');
break;
default:
show_404();
break;
}
}
public function save_routes($controller=null)
{
$output="<?php ";
$output.="\$route['auth']='auth';";
$output.="\$route['rest']='rest';";
$output.="\$route['(:any)']='".$controller."/$1';";
$this->load->helper('file');
write_file(APPPATH . "cache/routes.php", $output);
$string = read_file('./path/to/file.php');
}
}
解決済み:
base_url() にリダイレクトせずbase_url().'/CA'
、もちろんどちらが原因であるかを期待してbase_url().'/CA/index'
、直接リダイレクトすることで、この問題を回避しました。base_url().'/index'