重定向在Codeigniter中的index.php页面中

Kic*_*chu 3 redirect codeigniter

我在codeigniter开发一个网站.这是我的网址http://myserver.net/visio/UBwXo.这ttp://myserver.net/visio/是我的base_url.

/visio/这里有一个变量.当/ visio /之后有任何值时,我想从数据库中取相应的url到这个值.

这意味着在我的数据库中,

UBwXo =>" *任何网址*** "

jshom =>" *任何网址*** "

所以,后/ Visio中获得价值的时候/我想从DATABSE采取相应的URL,然后在该URL重定向它,而无需使用htaccess的.

我想在根文件夹的index.php页面中完成此重定向过程.

这可能吗?

原始网址为http://myserver.net/visio/UBwXo喜欢myserver.net/visio/index.php/admin/index/UBwXo

默认控制器是 admin

Val*_*yev 7

首先,在controllers文件夹(application/controllers)中创建redirect.php文件,并将此代码添加到此文件中:

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Redirect extends CI_Controller
{

    /**
     * Method to redirect from an alias to a full URL
     */
    public function index()
    {

    $alias = $this->uri->segment(1);

    $this->db->select('url');

    $query = $this->db->get_where('links', array('alias' => $alias), 1, 0);

    if ($query->num_rows() > 0)
    {
        foreach ($query->result() as $row)
        {
        $this->load->helper('url');

        redirect($row->url, 'refresh', 301);
        }
    }
    else
    {
        echo "Sorry, alias '$alias' not found";
    }
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在数据库中创建表.你的桌子必须是这样的:

CREATE TABLE IF NOT EXISTS `links` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `alias` varchar(6) CHARACTER SET utf8 DEFAULT NULL,
  `url` text CHARACTER SET utf8,
  PRIMARY KEY (`id`),
  UNIQUE KEY `alias` (`alias`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
Run Code Online (Sandbox Code Playgroud)

之后,将默认控制器值设置为重定向类.打开application/config/routes.php.查找$route['default_controller'],然后设置redirect为此变量的值,如下所示:

$route['default_controller'] = "redirect";
Run Code Online (Sandbox Code Playgroud)

然后享受生活;)

编辑:

我忘了提到config/routes.php重定向的URI路由:

$route[':any'] = "redirect/index/$1";
Run Code Online (Sandbox Code Playgroud)