当前位置 : 主页 > 网页制作 > HTTP/TCP >

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

来源:互联网 收集:自由互联 发布时间:2021-06-16
我在codeigniter开发一个网站.这是我的网址http://myserver.net/visio/UBwXo. 这里http://myserver.net/visio/是我的base_url. 之后/ visio /这里有一个变量.当/ visio /之后有任何值时,我想从数据库中获取相应
我在codeigniter开发一个网站.这是我的网址http://myserver.net/visio/UBwXo.
这里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";
网友评论