【发布时间】:2019-03-18 10:47:22
【问题描述】:
我刚刚开始尝试学习 Laravel (5.8)。
我在 Windows 上使用 XAMPP 进行本地开发。
我遵循了一个使用专辑主题将 Bootstrap 4 与 Laravel 集成的在线示例。
该项目名为专辑,它在 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'的Action是一样的。
这是我的 .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]
显然,我对 Laravel 的一些基本知识还不太了解。
(请随时根据需要修改此问题的标题)
【问题讨论】:
-
你启用了 mod-rewrite 吗?
-
是的(我想是的),我已经发布了 .htaccess
-
你试过了吗?
Route::get('/demo', function () { return view('demo'); }); -
@entoniperez:是的,这就是我正在尝试的,我已经编辑了问题,谢谢。
-
你的 .htaccess 有这行
RewriteEngine on吗?