2

我对 CodeIgniter 非常陌生,并且无法从我的默认类中调用函数。

控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Main extends CI_Controller 
{

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

public function welcome()
    {
    $this->load->view('view_welcome');      
    }
}

.htaccess 文件

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /pickme/

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php

目前它默认调用这个主控制器,正如我所期望的那样。

例如

localhost/sitename
AND
localhost/sitename/index.php
AND
localhost/sitename/index.php/main/index
(All have the same result)

所以我的印象是

localhost/sitename/class/function/id

将是 htaccess 的工作方式,但是当我尝试访问时出现 404 错误

localhost/sitename/main/welcome
4

1 回答 1

1

尝试使用用户手册中建议的重写规则。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

我不是 apace rewrite 模块的专家,但你的肯定看起来错了。您不希望您的应用程序和系统文件夹可以从浏览器访问。最佳实践实际上是将其保存在您的 Web 根文件夹之外。

此外,我认为没有理由从 index 方法调用 welcome 方法,只是将逻辑保留在 index 控制器中。

但是你的想法:

hostname/folder/class/function/parameters

非常真实:)

最后但并非最不重要的一点是,您可能忘记将 config.php 中的索引文件留空,如果您想删除 index.php,则需要这样做。

祝你好运 (:

编辑:

尝试在您的 htaccess 文件中使用它:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>

在你的 config.php 中记得添加一个斜杠。

有了这个,它在这里工作。

于 2013-06-02T23:20:21.933 回答