我希望使用CodeIgniter框架创建自定义路由。我试图像这样制作网址:
http://localhost/accounts/Auth.dll?signin
到目前为止,我已尝试将以下内容添加到我的routes.php配置文件中:
$route['accounts/Auth.dll?signin'] = "accounts/signin";
但正如你猜测的那样,它不起作用。我也试过逃避这样的角色:
$route['accounts/Auth\.dll\?signin'] = "accounts/signin";
这也不起作用。我也尝试过包括前导斜杠和尾随斜杠......但是也没用。任何人都知道什么可以解决我的问题?
答案 0 :(得分:3)
我强烈建议您使用SEF路由。
但是,如果由于任何原因你不想,你可以检查Accounts
控制器中的查询字符串,然后调用正确< strong>方法,如下:
<强>路由器:强>
$route['accounts/Auth.dll'] = "accounts";
<强>控制器:强>
class Accounts extends CI_Controller
{
public function __construct()
{
# Call the CI_Controller constructor
parent::__construct();
# Fetch the query string
if ($method = $this->input->server('QUERY_STRING', TRUE)) {
# Check whether the method exists
if (method_exists($this, $method)) {
# Invoke the method
call_user_func(array($this, $method));
}
}
}
protected function signin()
{
# Your logic here
}
}
这允许您自动通过查询字符串调用方法。
答案 1 :(得分:0)
我不确定,在routes.php配置中使用GET-params是可以的。 试试这样:
<强> routes.php文件强>
$route['accounts/Auth.dll'] = "accounts/index";
<强> accounts.php 强>
public function index() {
if ($this->input->get('signin') != false) {
$this->signin();
}
}
private function signin() {
// some code
}
但是,对我而言,这是不好的方式。
我建议您使用其他路由:
/accounts/Auth.dll/signin
等等。