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
首先,在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)
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |