Codeigniter-未指定输入文件


86

我是Codeigniter的初学者,我看过CI教程,只是想做一件简单的事情。我下载了CI,并将此文件添加到控制器目录中,但是它不起作用。

<?php

class site extends CI_Controller
{
    public function index()
    {
        echo "Hello World";
    }

    function dosomething()
    {
        echo "Do Something";
    }   
}    
?>

当我尝试使用http://..../index.php/site访问它时,得到输出...“未指定输入文件” .....,我将文件命名为site.php。


尝试检查此链接,看看是否可以解决问题。
Vap0r 2011年

No不帮忙,谢谢您的付出
koool,2011年

Answers:


291

只需添加在.htaccess文件中的index.php之后签名:

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

它会工作!


对我来说,这提供了301重定向,最后在URL中以/?/结尾。
2013年

@Ali Mohamed,您添加哪一行htaccess文件?我尝试过但没有任何效果
Bahdeng 2014年

1
@Bahdeng,您需要将此代码段放置在项目目录中的.htaccess文件中。
Ali Mohamed 2014年

根据您的应用程序目录更改上面的行,例如如果您的应用程序不在根目录上,则在上面的行的位置编写以下代码RewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy 2014年

1
@NSGodMode除了index.php外,还将位于codeigniter根目录中
Ali Mohamed

58

Godaddy托管似乎固定在.htaccess,我自己正在工作

RewriteRule ^(.*)$ index.php/$1 [L]

RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

根据您的应用程序目录更改上面的行,例如如果您的应用程序不在根目录上,则在上面的行的位置编写以下代码RewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy 2014年

其使我无法找到CI 3的404页
Nipun Tyagi

38

我在这里找到了此问题的答案.....问题是托管服务器...我感谢所有尝试过的人....希望这会对其他人有所帮助

Godaddy安装提示


根据您的应用程序目录更改上面的行,例如如果您的应用程序不在根目录上,则在上面的行的位置编写以下代码RewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy 2014年

17

CodeIgniter应用程序的.htaccess文件中的RewriteEngine,DirectoryIndex

我只是更改了.htaccess文件的内容,如以下链接所示。并尝试刷新页面(该页面不起作用,并且找不到对我的控制器的请求),该页面可以正常工作。

然后由于我的疑问,我撤消了对我的public_html文件夹中的.htaccess所做的更改,恢复为原始的.htaccess内容。所以现在如下(原来是):

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]

现在也可以使用。

提示: 似乎在服务器上下文中尚未明确设置重写规则之前。

我的文件结构如下:

/
|- gheapp
|    |- application
|    L- system
|
|- public_html
|    |- .htaccess
|    L- index.php

在中,index.php我为系统和应用程序设置了以下路径:

$system_path = '../gheapp/system';
$application_folder = '../gheapp/application';

注意:这样,我们的应用程序源代码首先对公众隐藏了。

请,如果你们发现我的答案有问题,请评论并重新纠正我!
希望初学者会发现此答案有帮助。

谢谢!


1

我的网站托管在MochaHost上,我很难设置.htaccess文件,以便可以从URL中删除index.php。但是,经过一番谷歌搜索后,我将这个线程的答案与其他答案结合了起来。我最终的.htaccess文件具有以下内容:

<IfModule mod_rewrite.c>
    # Turn on URL rewriting
    RewriteEngine On

    # If your website begins from a folder e.g localhost/my_project then 
    # you have to change it to: RewriteBase /my_project/
    # If your site begins from the root e.g. example.local/ then
    # let it as it is
    RewriteBase /

    # Protect application and system files from being viewed when the index.php is missing
    RewriteCond $1 ^(application|system|private|logs)

    # Rewrite to index.php/access_denied/URL
    RewriteRule ^(.*)$ index.php/access_denied/$1 [PT,L]

    # Allow these directories and files to be displayed directly:
    RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|public|app_upload|assets|css|js|images)

    # No rewriting
    RewriteRule ^(.*)$ - [PT,L]

    # Rewrite to index.php/URL
    RewriteRule ^(.*)$ index.php?/$1 [PT,L]
</IfModule>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.