我在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";
