laravel 5 nur Stamm-route funktioniert
Ich bin neu in laravel. Ich bin mit Ubuntu 15.04. Habe ich installiert, Laravel Framework, version 5.1.7 (LTS) mit Komponist und ein lamp-server mit $ sudo apt-get install lamp-server^
Befehl (habe ich nicht installieren, Homestead). Ich bin mit PhpStorm 8.0.3
als IDE.
Erstellte ich drei Routen und einen controller. Die PagesController.php
- Datei sieht wie folgt aus:
class PagesController extends Controller
{
public function index()
{
return 'Welcome to my homepage!';
}
public function about()
{
return 'Learn a little about me.';
}
public function hello()
{
return 'Hello World!';
}
}
und die routes.php
sieht wie folgt aus:
Route::get('/', 'PagesController@index');
Route::get('about', 'PagesController@about');
Route::get('hello', 'PagesController@hello');
Immer, wenn ich gehen, um http://localhost:63342/my-first-app/public/
(oder http://localhost:63342/my-first-app/public/index.php
) es funktioniert einwandfrei und zeigt mir die Welcome to my homepage!
Nachricht. Aber wenn ich gehe, um http://localhost:63342/my-first-app/public/hello
oder http://localhost:63342/my-first-app/public/about
, was ich bekomme ist 404 Not Found
Nachricht.
Auch, die .htaccess
- Datei, die befindet sich bei my-first-app/public
sieht wie folgt aus:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Was ich versucht habe:
- Ich versuchte
http://localhost:63342/my-first-app/public/index.php/hello
oderhttp://localhost:63342/my-first-app/public/index.php/about
aber es funktioniert auch nicht. - Ich eingegeben Befehl
sudo a2enmod rewrite
gefolgt vonsudo service apache2 restart
aber es funktioniert auch nicht. - Ich versuchte
composer dump-autoload
aber es funktioniert auch nicht. -
Änderte ich
AllowOverride
ausNone
zuAll
imapache2.conf
. Jetzt Teil sieht es wie folgt aus:<Directory /> Options FollowSymLinks AllowOverride All Require all denied </Directory> <Directory /usr/share> AllowOverride All Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /srv/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
aber es löst nicht das problem entweder.
Update (7/15/2015):
Das Ergebnis der Ausführung php artisan route:list
sieht wie folgt aus:
+--------+----------+-------+------+--------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------+------+--------------------------------------------+------------+
| | GET|HEAD | / | | App\Http\Controllers\PagesController@index | |
| | GET|HEAD | about | | App\Http\Controllers\PagesController@about | |
| | GET|HEAD | hello | | App\Http\Controllers\PagesController@hello | |
+--------+----------+-------+------+--------------------------------------------+------------+
- Führen Sie "php artisan route:Liste" und fügen Sie die Ausgabe. Sie sollten sehen, alle definierten Routen.
- Vielen Dank für Ihre Antwort. Ich fügte hinzu, das Ergebnis am Ende meiner Frage.
- Könntest du ein dd('test'); an der Spitze der index-Datei, gehen Sie zu "localhost:63342/meine-erste-app/public/index.php/info" und sehen, ob der test ausgegeben werden? auf diese Weise würden wir wissen, wenn es etwas umschreiben oder mit Laravel code
- Ich fügte
dd('test');
obenindex.php
- Datei. Nun, wenn ich gehen, umhttp://localhost:63342/my-first-app/public/index.php
es zeigt mir eine leere Seite und wenn ich aufhttp://localhost:63342/my-first-app/public/index.php/about
es gibt mir die gleichen404 Not Found
Nachricht. - Ich meinte sterben,nicht dd 🙂 wie auch immer, jetzt wissen wir, es ist etwas falsch mit der schreibt. Ich werde versuchen, den Grund zu finden, später, können Sie suchen Sie sich für einige Probleme mit dem umschreiben, wie es für Sie sicher nicht Laravel-routing.
- Danke für Eure Hilfe. Ich werde weiter suchen.
- Hey, wir ändern die RewriteEngine auf "off" in der .htaccess für einen moment. Funktioniert es dann?
- Ich änderte
RewriteEngine
zuOff
. Die situation ist die gleiche wie zuvor. - Dann scheint es, wie es ist, nicht mod_rewrite. Um sicher zu stellen, starten Sie den Apache neu. In den Routen, fügen Sie diese für einen weiteren test und öffnen Sie die Seite:
Route::get('test', function(){ echo 'test works';});
- Leider funktioniert es ebenfalls nicht.
- $heute: funktioniert das?
http://localhost:63342/my-first-app/public/test
Wenn nicht, was siehst du? Und was machen die Apache-logs sagen? - Würden Sie bitte ausführen
php artisan serve --port 8000 --host 127.0.0.1
in Ihrem consol (vielleicht terminal, da Sie in Linux) und navigieren Sie dann zuhttp://localhost:8000/about
und sagen Sie uns, was passiert? Auch, denken Sie daran, Sie müssen möglicherweise starten Sie Ihren apache-server auf Ihrem lampp. - Nein, es funktioniert nicht. Es zeigt die
404 not found
Nachricht. @CrackingTheCode ich Tat was Sie sagte und ging zuhttp://localhost:8000/about
Es zeigt die richtigeLearn a little about me!
Nachricht. Was ist also das problem? Danke. - So, es hat etwas todo mit Ihrer Umgebung und nicht laravel. Was tun die Apache-logs sagen?
- hast du es geschafft, dies zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktivieren, apache2 rewrite-Modul:
Starten Sie den apache2 server:
Und stellen Sie sicher, dass
AllowOverride All
zu Ihrem apache2 config-Datei.Ich habe mit diesem lästigen problem für eine lange Zeit. Öffnen
.htaccess
Datei in den öffentlichen Ordner, und ersetzen Sie den folgenden code, erstellen Sie eine Sicherungskopie Ihrer original-code nur für den Fall.Verändern .htaccess-Datei wäre in diesem Szenario pro laravel 5 offizielle Dokument wie folgt: