Codeigniter: nessun file di input specificato


86

Sono un principiante in Codeigniter e ho visto un tutorial CI e stavo solo cercando di fare una cosa semplice. Ho scaricato l'elemento della configurazione e ho aggiunto questo file alla directory del controller, ma non funzionerà.

<?php

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

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

Quando provo ad accedervi usando http: //..../index.php/site ottengo l'output ... "nessun file di input specificato" .... a proposito, ho chiamato il file site.php


Prova a controllare questo link e vedi se risolve il problema.
Vap0r

No non aiuta grazie per lo sforzo
koool

Risposte:


291

Basta aggiungere il ? firmare dopo index.php nel file .htaccess:

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

e funzionerebbe!


Per me questo serve un reindirizzamento 301 e finisco con /? / Nell'URL.
Ade

@Ali Mohamed, quale file htaccess aggiungi questa riga? Ho provato ma non ha avuto alcun effetto
Bahdeng

1
@Bahdeng devi inserire questo frammento nel file .htaccess nella directory del tuo progetto.
Ali Mohamed

cambia la riga sopra in base alla directory dell'applicazione come se l'applicazione non fosse nella directory principale, scrivi il seguente codice al posto della riga sopraRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

1
@NSGodMode che sarebbe nella directory principale di codeigniter oltre a index.php
Ali Mohamed

58

L'hosting di Godaddy sembra fisso .htaccess, io stesso funziona

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

per

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

cambia la riga sopra in base alla directory dell'applicazione come se la tua applicazione non fosse nella directory principale, scrivi il seguente codice al posto della riga sopraRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

Mi sta ottenendo la pagina 404 non trovata con CI 3
Nipun Tyagi

38

Ho trovato la risposta a questa domanda qui ..... Il problema era l'hosting del server ... Ringrazio tutti coloro che hanno provato ... Spero che questo possa aiutare gli altri

Suggerimenti per l'installazione di Godaddy


cambia la riga sopra in base alla directory dell'applicazione come se l'applicazione non fosse nella directory principale, scrivi il seguente codice al posto della riga sopraRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

17

RewriteEngine, DirectoryIndex nel file .htaccess delle app CodeIgniter

Ho appena cambiato il contenuto del file .htaccess e come mostrato nella risposta dei seguenti link . E ho provato ad aggiornare la pagina (che non ha funzionato e non è riuscito a trovare la richiesta al mio controller) ha funzionato.

Quindi, solo a causa del mio dubbio, ho annullato le modifiche apportate al mio .htaccess all'interno della mia cartella public_html riportando al contenuto originale .htaccess . Quindi ora è come segue (che in origine era):

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]

E ora funziona anche.

Suggerimento: sembra che prima le regole di riscrittura non fossero state impostate chiaramente nel contesto del server.

La mia struttura dei file è la seguente:

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

E in index.phpho impostato i seguenti percorsi per il sistema e l'applicazione:

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

Nota: in questo modo, il codice sorgente della nostra applicazione viene inizialmente nascosto al pubblico.

Per favore, se trovate qualcosa di sbagliato nella mia risposta, commentate e correggetemi di nuovo!
Spero che i principianti trovino utile questa risposta.

Grazie!


1

Il mio sito è ospitato su MochaHost, ho avuto difficoltà a configurare il file .htaccess in modo da poter rimuovere index.php dai miei URL. Tuttavia, dopo aver cercato su Google, ho combinato la risposta su questo thread e altre risposte. Il mio file .htaccess di lavoro finale ha i seguenti contenuti:

<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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.