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年

努力に感謝することはできません
koool 2011年

回答:


291

?を追加するだけです .htaccessファイルのindex.phpの後に署名します。

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

そしてそれはうまくいくでしょう!


私の場合、これは301リダイレクトを提供し、URLに/?/が含まれることになります。
Ade

@Ali Mohamed、この行を追加するhtaccessファイルはどれですか。試しましたが、効果はありません
Bahdeng 2014年

1
@Bahdengこのスニペットをプロジェクトディレクトリの.htaccessファイルに配置する必要があります。
アリモハメド

アプリケーションがルートディレクトリにない場合のように、アプリケーションディレクトリに応じて上記の行を変更し、上記の行の代わりに次のコードを記述しますRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy 2014年

1
index.php以外のcodeigniterルートディレクトリにある@ NSGodMode–
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 2016

38

私はここでこの質問への答えを見つけました.....問題はホスティングサーバーでした...私は試したすべての人に感謝します....これが他の人に役立つことを願っています

GoDaddyのインストールのヒント


アプリケーションがルートディレクトリにない場合のように、アプリケーションディレクトリに応じて上記の行を変更し、上記の行の代わりに次のコードを記述しますRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy 2014年

17

RewriteEngine、CodeIgniterアプリの.htaccessファイルの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でホストされていますが、URLからindex.phpを削除できるように、.htaccessファイルを設定するのに苦労しました。しかし、グーグルした後、私はこのスレッドの回答と他の回答を組み合わせました。私の最終的な作業用.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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.