2012-12-05 18 views
5

Ho 3 server, un server Apache localhost, un server remoto di test e il server live di produzione.Codeigniter, il routing non funziona sul server di produzione

Ho la stessa installazione di codeign e configurazione del sito su tutti e 3 di loro e sul localhost e il routing dei server di prova senza 'index.php' funziona al 100%. Tuttavia, sul server di produzione, a prescindere da quale sia l'URL che dice solo la home page (tramite il controller predefinito), sembra che tutte le regole di routing vengano ignorate tranne quella predefinita.

Se tuttavia index.php viene aggiunto nell'URL, funzionerà come dovrebbe.

Ad esempio se l'URL nel sito di produzione è: "www.mysite.com/information", il contenuto che carica è il controller predefinito.

Tuttavia, quando l'URL nel sito di produzione è: "www.mysite.com/index.php/information", il contenuto caricato viene dal controller "informazioni".

Questo è il contenuto del mio file htacess: http://pastebin.com/cDaZVJ8A

Questo è il mio percorsi di file di configurazione: http://pastebin.com/7Ewc2bwN

mio $ config [ 'index_page'] è impostato su nulla.

Non so davvero perché non funziona, la stessa configurazione su tutti i server in termini di codeigniter stesso e mod_rewrite sta lavorando sul server di produzione.

Non so cosa fare, come posso scoprire cosa c'è che non va?

+0

Hai verificato se 'routes.php' esiste nella directory' application/config/production'? Se il file esiste, sovrascriverà quello nella directory 'application/config'. – Stanley

+0

@Stanley, esiste sul server di produzione nella posizione corretta. – Nicekiwi

+0

@ Stanley, aspetta cosa? non ci sono cartelle all'interno della directory di configurazione? – Nicekiwi

risposta

6

Questo è piuttosto un problema comune che si verifica spesso quando le persone spostano un'installazione codeigniter da un ambiente a un altro. Non ho idea del perché si verifichi, potrebbe essere una differenza nel sistema operativo del server o nelle impostazioni di apache, ma la soluzione è spesso di aggiungere un punto interrogativo ? alla RewriteRule per index.php nel file .htaccess.

Vecchio:

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

Nuovo:

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

Non ho mai avuto questo problema, ma è utile conoscere una possibile soluzione – m4t1t0

1

Controlla la configurazione del tuo host virtuale Apache e verifica di avere AllowOverride All nella definizione della directory.

+0

Non ho accesso a questo, è un server condiviso. – Nicekiwi

1
  1. Forse qualcosa non va nel tuo file .htaccess?

    Una volta ho avuto problemi quando spostavo l'applicazione sul server di produzione, perché RewriteBase era impostato su una directory sul server di sviluppo.

    Nella mia applicazione server di produzione era nella directory radice Web, quindi RewriteBase dovrebbe essere / e io avevo /something lì.

  2. Una volta ho avuto un problema stupido con lettere maiuscole/minuscole, quando ho spostato il sito dal server di sviluppo (Windows) alla produzione (linux).

+0

Vorrei che fosse così facile, puoi vedere il mio file htacess dal link nella domanda. È corretto. – Nicekiwi

+0

Dai un'occhiata ora a Ezra. Ho aggiunto un altro suggerimento. – Kamil

0

ho avuto lo stesso problema.Stavo usando la funzione per convertire i nomi degli articoli in URL (slugify).

Su localhost e sul server questa funzione ha restituito URL leggermente diversi.

Problemi correlati