Codeigniter - keine Eingabedatei angegeben


86

Ich bin ein Anfänger in Codeigniter und habe ein CI-Tutorial gesehen und nur versucht, eine einfache Sache zu machen. Ich habe das CI heruntergeladen und diese Datei zum Controller-Verzeichnis hinzugefügt, aber es funktioniert nicht.

<?php

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

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

Wenn ich versuche, über http: //..../index.php/site darauf zuzugreifen, erhalte ich die Ausgabe ... "keine Eingabedatei angegeben" .... übrigens habe ich die Datei site.php benannt


Überprüfen Sie diesen Link und prüfen Sie, ob das Problem dadurch behoben wird.
Vap0r

Nein hilft nicht, danke für die Mühe
koool

Antworten:


291

Fügen Sie einfach das ? Unterschreiben Sie nach index.php in der .htaccess-Datei:

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

und es würde funktionieren!


Für mich dient dies einer 301-Weiterleitung und ich lande mit /? / In der URL.
Ade

@Ali Mohamed, welche der htaccess-Dateien fügen Sie dieser Zeile hinzu? Ich habe es versucht, aber es hat keine Wirkung
Bahdeng

1
@Bahdeng Sie müssen dieses Snippet in der .htaccess-Datei in Ihrem Projektverzeichnis ablegen.
Ali Mohamed

Ändern Sie die obige Zeile entsprechend Ihrem Anwendungsverzeichnis. Wenn sich Ihre Anwendung nicht im Stammverzeichnis befindet, schreiben Sie den folgenden Code anstelle der obigen ZeileRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

1
@NSGodMode, der sich neben index.php im Codeigniter-Stammverzeichnis befinden würde
Ali Mohamed

58

Godaddy Hosting scheint fixiert zu sein .htaccess, ich selbst es funktioniert

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

zu

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

Ändern Sie die obige Zeile entsprechend Ihrem Anwendungsverzeichnis. Wenn sich Ihre Anwendung nicht im Stammverzeichnis befindet, schreiben Sie den folgenden Code anstelle der obigen ZeileRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

Es bringt mir 404 Seite nicht gefunden mit CI 3
Nipun Tyagi

38

Ich habe die Antwort auf diese Frage hier gefunden ..... Das Problem war das Hosten des Servers ... Ich danke allen, die es versucht haben .... Ich hoffe, dies wird anderen helfen

Godaddy Installationstipps


Ändern Sie die obige Zeile entsprechend Ihrem Anwendungsverzeichnis. Wenn sich Ihre Anwendung nicht im Stammverzeichnis befindet, schreiben Sie den folgenden Code anstelle der obigen ZeileRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

17

RewriteEngine, DirectoryIndex in der .htaccess-Datei von CodeIgniter-Apps

Ich habe gerade den Inhalt der .htaccess- Datei geändert und wie in den folgenden Links gezeigt, geantwortet. Und ich habe versucht, die Seite zu aktualisieren (was nicht funktioniert hat und die Anfrage an meinen Controller nicht gefunden hat). Es hat funktioniert.

Dann habe ich nur aufgrund meines Zweifels die Änderungen, die ich an meinem .htaccess in meinem public_html- Ordner vorgenommen habe, wieder auf den ursprünglichen .htaccess- Inhalt zurückgesetzt. So ist es jetzt wie folgt (was ursprünglich war):

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]

Und jetzt funktioniert es auch.

Hinweis: Die Rewrite-Regeln wurden anscheinend nicht eindeutig im Serverkontext eingerichtet.

Meine Dateistruktur ist wie folgt:

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

Und in der habe index.phpich folgende Pfade zum System und zur Anwendung eingerichtet:

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

Hinweis: Auf diese Weise wird unser Anwendungsquellcode zunächst für die Öffentlichkeit ausgeblendet.

Bitte, wenn ihr etwas falsch mit meiner Antwort findet, kommentiert und korrigiert mich erneut!
Hoffe, Anfänger würden diese Antwort hilfreich finden.

Vielen Dank!


1

Meine Website wird auf MochaHost gehostet. Es fiel mir schwer, die .htaccess-Datei so einzurichten, dass ich die index.php aus meinen URLs entfernen kann. Nach einigem googeln kombinierte ich jedoch die Antwort auf diesen Thread und andere Antworten. Meine endgültige funktionierende .htaccess-Datei enthält den folgenden Inhalt:

<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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.