Codeigniter - nie określono pliku wejściowego


86

Jestem początkującym w Codeigniter i zobaczyłem samouczek CI i po prostu próbowałem zrobić prostą rzecz. Ściągnąłem CI i dodałem ten plik do katalogu kontrolera, ale to nie zadziała.

<?php

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

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

Kiedy próbuję uzyskać do niego dostęp za pomocą http: //..../index.php/site , otrzymuję wynik ... "nie określono pliku wejściowego" .... tak przy okazji, nazwałem plik site.php


Spróbuj sprawdzić ten link i zobacz, czy to rozwiązuje problem.
Vap0r

Żaden nie pomaga, dzięki za wysiłek
koool

Odpowiedzi:


291

Po prostu dodaj ? znak po index.php w pliku .htaccess:

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

i to zadziała!


Dla mnie służy to przekierowaniu 301 i kończę na /? / W adresie URL.
Ade

@Ali Mohamed, który z pliku htaccess dodajesz tę linię? Próbowałem, ale bez skutku
Bahdeng

1
@Bahdeng musisz umieścić ten fragment kodu w pliku .htaccess w katalogu swojego projektu.
Ali Mohamed,

zmień powyższą linię zgodnie z katalogiem aplikacji, na przykład jeśli aplikacji nie ma w katalogu głównym, napisz poniższy kod w miejsce powyższej liniiRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

1
@NSGodMode, który byłby w katalogu głównym codeigniter poza index.php
Ali Mohamed

58

Hosting GoDaddy wydaje się być naprawiony .htaccess, ja sam działa

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

do

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

zmień powyższą linię zgodnie z katalogiem aplikacji, na przykład jeśli aplikacji nie ma w katalogu głównym, napisz poniższy kod w miejsce powyższej liniiRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

To
sprawia,

38

Odpowiedź na to pytanie znalazłem tutaj ..... Problem dotyczył hostingu serwera ... Dziękuję wszystkim, którzy próbowali ... Mam nadzieję, że to pomoże innym

Wskazówki dotyczące instalacji GoDaddy


zmień powyższą linię zgodnie z katalogiem aplikacji, na przykład jeśli aplikacji nie ma w katalogu głównym, napisz poniższy kod w miejsce powyższej liniiRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

17

RewriteEngine, DirectoryIndex w pliku .htaccess aplikacji CodeIgniter

Właśnie zmieniłem zawartość pliku .htaccess i, jak pokazano w poniższych linkach, odpowiadam. Próbowałem odświeżyć stronę (co nie zadziałało i nie mogłem znaleźć żądania do mojego kontrolera) zadziałało.

Następnie tylko z powodu moich wątpliwości cofnąłem zmiany, które wprowadziłem w moim .htaccess w moim folderze public_html, przywracając oryginalną zawartość .htaccess . Więc teraz wygląda następująco (tak było pierwotnie):

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]

A teraz też działa.

Wskazówka: Wygląda na to, że reguły przepisywania nie zostały jasno skonfigurowane w kontekście serwera.

Moja struktura plików jest następująca:

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

A w sekcji index.phpustawiłem następujące ścieżki do systemu i aplikacji:

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

Uwaga: w ten sposób kod źródłowy naszej aplikacji staje się początkowo publicznie ukryty.

Proszę, jeśli znajdziecie coś złego w mojej odpowiedzi, skomentujcie i poprawcie mnie ponownie!
Mam nadzieję, że początkujący uznają tę odpowiedź za pomocną.

Dzięki!


1

Moja witryna jest hostowana na MochaHost. Trudno mi było skonfigurować plik .htaccess, aby móc usunąć plik index.php z moich adresów URL. Jednak po pewnym googlowaniu połączyłem odpowiedź w tym wątku z innymi odpowiedziami. Mój końcowy plik roboczy .htaccess ma następującą zawartość:

<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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.