如何在CodeIgniter中更改空URL?

时间:2013-09-17 13:10:03

标签: php .htaccess codeigniter redirect url-rewriting

我想从mysite.com/en/home重定向我的网页,而URI是mysite.com

我用routes.php尝试过很多东西,但没有一个有效:

$route['(:any)/'] = 'pages/view/$1/home';
$route[''] = 'home';
$route[''] = 'en';

这只能通过.htaccess获得吗?如果是这样,我怎么能这样做只会影响mysite.com或mysite.com/en查询。

由于其他网址类似于mysite.com/en/about,我不想把它们弄成mysite.com/en/home/about

P.S。

我有以下规则将mysite.com/x/y转换为mysite.com/index.php/x/y

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

可能是这条规则与其他规则冲突的情况吗?

感谢您的帮助。

编辑:

好的,为了尝试Diego Camacho的回答,我创建了一个空的CI项目,在config.php中设置了基本网址,然后在routes.php中制定了以下两个规则:

$route['(:any)'] = 'Site';
$route['default_controller'] = "pages/view";

并将此功能添加到pages.php(控制器):

    public function view($arg)
{
    if(!$arg)
    {
        echo "no argument";
    }
    else
    {
        echo "argument = $arg";
    }
}

所以现在,我希望它能像这样工作:

http://localhost/ci/index.php/ - >没有争论 http://localhost/ci/index.php/abc - > arg = abc

但相反,它会返回以下内容:

http://localhost/ci/index.php/ - >

  

遇到PHP错误

     

严重性:警告

     

消息:缺少Pages :: view()

的参数1      

文件名:controllers / pages.php

     

行号:26

     

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:arg

     

文件名:controllers / pages.php

     

行号:28

     

没有争论

http://localhost/ci/index.php/abc
  

未找到404页面

     

找不到您请求的页面。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要将页面路由到主控制器,以便主控制器可以加载您的主页。示例

$route['(:any)'] = 'Site';

控制器:

class Site extends CI_Controller {

 function __construct() {
    parent::__construct();
 }

 public function index() {
    $this->home();
 }

 public function home() {
    $this->load->view('content/home');
 }

答案 1 :(得分:0)

哦,我想我解决了这个问题。我需要像这样制作routes.php文件:

$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = "pages/view";