0

我想从 重定向我的网页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 查询。

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

ps

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

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

会不会是这条规则与其他规则相冲突?

谢谢你的帮助。

编辑:

好的,为了尝试 Diego Camacho 的回答,我创建了一个空的 CI 项目,将基本 url 设置为config.php,然后在 routes.php 中创建了 -only- 两个规则,如下所示:

$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

文件名:控制器/pages.php

行号:26

遇到 PHP 错误

严重性:通知

消息:未定义变量:arg

文件名:控制器/pages.php

行号:28

没有争论

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

404页面不存在

未找到您所请求的页面。

我在这里做错了什么?

4

2 回答 2

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');
 }
于 2013-09-17T13:42:08.060 回答
0

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

$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = "pages/view";
于 2013-09-17T14:11:22.583 回答