Я только начал пытаться выучить Ларавел (5.8).
Я использую XAMPP для локальной разработки под Windows.
Я следовал онлайн-примеру, который интегрирует Bootstrap 4 с Laravel, используя тему Album.
Проект называется Album и находится вне XAMPP; поэтому я установил VirtualHost:
<VirtualHost *:80>
ServerName album.dev
DocumentRoot Z:/WebDev/Projects/Album/public
<Directory " Z:/WebDev/Projects/Album">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Если я вызываю album.dev в браузере, он работает нормально, я получаю ожидаемую домашнюю страницу.
Однако, когда, в соответствии с инструкциями примера, я пытаюсь запустить с: album.dev/demo, я получаю ошибку 404.
Вот так выглядит мой web.php:
Route::get('/', function () {
// return view('welcome');
return view('demo');
});
// does not work:
Route::get('/demo', function () {
return view('demo');
});
Я также попытался использовать контроллер для обоих путей:
Route::get('/', 'DemoController@index');
Route::get('/demo', 'DemoController@index');
с тем же результатом: только '/' работает для запуска страницы.
Но это интересно:
PS Z:\WebDev\Projects\album> php artisan route:list
+--------+----------+----------+------+-------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+----------+------+-------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\DemoController@index | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | demo | | App\Http\Controllers\DemoController@index | web |
+--------+----------+----------+------+-------------------------------------------+--------------+
В соответствии с вышеизложенным, действие для '/' и для 'demo' одинаково.
Это мой .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Очевидно, я не понял чего-то совершенно фундаментального в Ларавеле.
(Пожалуйста, при необходимости измените заголовок этого вопроса)