【问题标题】:Laravel Url two levels deepLaravel Url 两层深
【发布时间】:2018-03-25 21:40:13
【问题描述】:

学习 Laravel,我在 AWS 上建立了一个开发区,带有一个 Ubuntu 服务器。我可以创建一层深度的页面

Route::get('/campgrounds','CampgroundController@index');

这些工作正常,但是当我深入两层时,它们就不起作用了。当我尝试创建一个深度为两层的路线时,我得到一个“您要查找的页面不存在”。

Route::get('/campgrounds/create', function (){
    return view('welcome');
});

我在 logging.log 文件中没有看到任何出错的内容。是否有我需要的 Laravel 设置或需要更改的 Apache 设置?也许.env 文件中的某些内容?

这是我正在运行的路线

# php artisan route:list

这是我的 Apache 站点配置:

<Directory /var/www/html/laravel/pubic>
    Options Indexes FollowSymLinks Multiviews
    AllowOverride All
    Require all granted
</Directory>

AccessFileName .htaccess

【问题讨论】:

  • 感谢 Tama,但事实并非如此。我将编辑帖子,使其看起来相同。我已经尝试过 / 和没有 / 似乎没有任何效果。
  • 显示您的 Apache 站点配置。
  • 很抱歉让您感到痛苦,但公开粘贴是否安全?您只需要其中的一部分还是整个配置文件?
  • 你应该检查这个配置/etc/apache2/sites-enabled/000-default.conf并正确设置DocumentRoot
  • DocumentRoot /var/www/html/laravel/public @Ben 这是DocRoot,它应该指向不同的东西吗?

标签: laravel url


【解决方案1】:

在 Laravel 中,路由将按照定义的顺序进行检查。一旦有匹配,检查将停止并加载适当的闭包/控制器。

如果您在具有相同模式的显式路由之前定义通配符路由,则通配符将首先匹配。

在此示例中,URI /campgrounds/create 将与第一个通配符路由匹配,即使在后面定义了确切的路由:

Route::get('/campgrounds/{campground}', ...);

Route::get('/campgrounds/create', ...);

在显式路由之后保留通配符路由,应该没问题:

Route::get('/campgrounds/create', ...);

Route::get('/campgrounds/{campground}', ...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2018-05-21
    • 1970-01-01
    • 2016-06-30
    相关资源
    最近更新 更多