Jestem nowy w laravel. Używam Ubuntu 15.04. Zainstalowałem Laravel Framework w wersji 5.1.7 (LTS) przy użyciu kompozytu i serwera lamp przy użyciu polecenia $ sudo apt-get install lamp-server^
(nie instalowałem Homestead). Używam PhpStorm 8.0.3
jako IDE.laravel 5 działa tylko z korzeniami root
Stworzyłem trzy trasy i kontroler. Plik PagesController.php
wygląda następująco:
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!';
}
}
i routes.php
wygląda następująco:
Route::get('/', '[email protected]');
Route::get('about', '[email protected]');
Route::get('hello', '[email protected]');
Ilekroć idę do http://localhost:63342/my-first-app/public/
(lub http://localhost:63342/my-first-app/public/index.php
) działa dobrze i pokazuje mi się komunikat Welcome to my homepage!
. Ale kiedy idę do http://localhost:63342/my-first-app/public/hello
lub http://localhost:63342/my-first-app/public/about
, otrzymuję wiadomość 404 Not Found
.
Ponadto plik .htaccess
który znajduje się na my-first-app/public
wygląda następująco:
<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>
Co próbowałem:
- Próbowałem
http://localhost:63342/my-first-app/public/index.php/hello
lubhttp://localhost:63342/my-first-app/public/index.php/about
ale to nie działa albo. - Wprowadziłem polecenie
sudo a2enmod rewrite
, po którym następuje, ale to też nie działa. - Próbowałem
composer dump-autoload
, ale to też nie działa. Zmieniłem
AllowOverride
zNone
naAll
wapache2.conf
. Teraz część wygląda tak:<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>
, ale to także nie rozwiązuje problemu.
Aktualizacja (15.07.2015):
Wynikiem działania php artisan route:list
wygląda następująco:
+--------+----------+-------+------+--------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------+------+--------------------------------------------+------------+
| | GET|HEAD |/ | | App\Http\Controllers\[email protected] | |
| | GET|HEAD | about | | App\Http\Controllers\[email protected] | |
| | GET|HEAD | hello | | App\Http\Controllers\[email protected] | |
+--------+----------+-------+------+--------------------------------------------+------------+
Uruchom "php rzemieślnik trasy: lista" i wklej wynik. Powinieneś tam zobaczyć wszystkie zdefiniowane trasy. –
@ jedrzej.kurylo Dzięki za odpowiedź. Dodałem wynik na końcu mojego pytania. – today
Czy możesz dodać dd ("test"); w górnej części pliku indeksu, przejdź do "http: // localhost: 63342/my-first-app/public/index.php/about" i sprawdź, czy test zostanie wydrukowany? w ten sposób dowiedzielibyśmy się, czy to coś z przepisywaniem, czy z kodem Laravel: –