【问题标题】:Laravel routing works only with '/' and not with '/stuff'Laravel 路由仅适用于 '/' 而不是 '/stuff'
【发布时间】: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吗?

标签: php laravel-5 routing


【解决方案1】:

要修复错误 404,请尝试以下操作: https://gist.github.com/iwebroot/544c3b5b7dcf0b8fd96c0dbef8a5d69f

你的错误:

<Directory "Z:/WebDev/Projects/Album">

正确的目录:

<Directory "Z:/WebDev/Projects/Album/public">

谢谢。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2016-08-23
    • 2020-12-04
    • 2016-02-07
    • 2012-12-06
    • 2015-02-05
    • 2019-04-24
    • 2020-05-15
    相关资源
    最近更新 更多