我在codeigniter开发一个网站.这是我的网址http://myserver.net/visio/UBwXo. 这里http://myserver.net/visio/是我的base_url. 之后/ visio /这里有一个变量.当/ visio /之后有任何值时,我想从数据库中获取相应
这里http://myserver.net/visio/是我的base_url.
之后/ visio /这里有一个变量.当/ visio /之后有任何值时,我想从数据库中获取相应的url到这个值.
这意味着在我的数据库中,
UBwXo => “*任何网址***”
jshom => “*任何网址***”
因此,在/ visio之后获取值时,我想从数据库获取相应的url并将其重定向到该url而不使用htaccess.
我想在根文件夹的index.php页面中完成此重定向过程.
这可能吗?
http://myserver.net/visio/UBwXo的原始网址,如myserver.net/visio/index.php/admin/index/UBwXo
默认控制器是admin
首先,在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"; } } }
然后在数据库中创建表.你的桌子必须是这样的:
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 ;
之后,将默认控制器值设置为重定向类.
打开application / config / routes.php.找到$route [‘default_controller’],然后将redirect设置为此变量的值,如下所示:
$route['default_controller'] = "redirect";
然后享受生活;)
编辑:
我忘记在config / routes.php中提到重定向的URI路由:
$route[':any'] = "redirect/index/$1";