2015-04-16 14 views
26

Ho un progetto Laravel 5 con instradamenti impostati e una pagina 404 personalizzata (principalmente per "pagine" mancanti/errate).Laravel sta "ascoltando" la stringa index.php ovunque nell'URL

Quindi, fondamentalmente, se apro qualsiasi percorso esistente ottengo l'uscita corretta ed ogni altro URL sta mostrando il 404:

  • project.com/login - Belle, login pagina

  • project.com/ghdkfgl - 404

Sembra chiaro e sembra funzionare come previsto. Quindi qualsiasi cosa aggiungo dopo la barra si apre o una pagina esistente o una pagina 404.

A meno che non inserisca un "index.php" nell'URL. In questo caso, laravel sta eseguendo la richiesta per qualche motivo come questo:

  • project.com/jhdfkds/index.php/login - Apre la pagina di login (la CSS e altre risorse se ne sono andati a causa dei percorsi, ma questo è chiaro).

  • project.com/kfhjdsg/index.php/fkdhsg - Apre un 404 (ma non vengono caricati anche il CSS e altre risorse).

Sono sicuro che entrambi dovrebbero aprire il 404 poiché non ci sono tali percorsi nel mio progetto.

Ho anche verificato lo stesso comportamento sul sito Web della documentazione di Laravel (presumo che sia stato creato su Laravel).

Quello che potrebbe essere la causa Questo? Come può essere risolto?

Perché Laravel dovrebbe considerare "index.php" nel mezzo dell'URL?

Questo ha qualcosa a che fare con il file .htaccess? (Non l'ho modificato però)

+0

Stai usando Apache o nginx? – ArjanSchouten

+0

in realtà entrambi. Ho un mamp (con apache) in esecuzione sul mio computer locale e nginx sui nostri server di sviluppo e di produzione – MaGnetas

+0

stesso problema qui su nginx –

risposta

16

Il problema è all'interno della classe Symfony Request e come si determina l'URL di base. Fondamentalmente si presuppone che se si dispone di una richiesta come aaa/index.php che lo script attualmente in esecuzione (denominato index.php) è all'interno della directory aaa prende aaa/index.php come URL di base.
Successivamente verrà quindi rimosso dall'URI della richiesta effettiva.

Ho risolto questo comportamento indesiderato con un pull request che è attualmente in fase di revisione. Aggiornerò questo post non appena verrà unito.

+0

Grazie, Lukas. Sto guardando il problema e ho visto la richiesta di pull. Speriamo che la correzione sarà inclusa nel prossimo aggiornamento di Laravel. – MaGnetas

+0

Immagino che non ci sia motivo di aspettare che la correzione diventi parte del framework. Molte grazie. – MaGnetas

-1

Lo stesso problema che stavo affrontando in laravel 3 quando stavo saltando il pubblico dall'URL. quindi ho inserito un altro file htaccess nella cartella pubblica.

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

Grazie per la tua risposta. Questo non mi ha aiutato. Inoltre probabilmente non avrebbe funzionato su nginx. – MaGnetas

+0

Se stai bene con i tuoi percorsi allora devi controllare il tuo htaccess di root. – khaliq

+0

Ma questo succede anche nelle pagine di documentazione di laravel. E htaccess è solo per i server Apache presumo. – MaGnetas

Problemi correlati