在laravel 5.3中,当http请求时,显示目录列表而不是视图


Directory listing shown rather than view when http request is made in laravel 5.3

我是laravel新手,目前正在构建application。现在在应用程序中,我想通过via this route: /admin到达admin index page但我最终以

结束

:MyApp.app/admin/

显示admin文件夹

的目录内容

而不是MyApp.app/admin

应该会在浏览器中显示一个视图

.

我添加了一个htaccess文件,其中包含以下代码,

<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]
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

但这改变不了什么。

这是我的route代码:

Route::get('admin', ['as'=>'posts.home', 'uses' => 'AdminPostsController@home']);

控制器代码:

public function home(){
        //
        return view('admin.index');
    }

请注意:我最初使用了一个简单的代码,如:

溃败:get (/admin,函数(){返回视图(' admin.index '});

但我仍然有同样的问题,但通过route resource访问视图工作正常。也许在"laravel 5.3"中有一个访问视图的standard way

这个应用程序是在我的linux电脑上。

我99%肯定的问题是,在你的项目中,你有一个目录在你的公共目录,命名为'admin'。如果你这样做了,这几乎肯定会导致问题,因为Laravel会找到公共目录,而不会继续在你的路由中寻找相同路径下的端点。

现在,假设这真的是你的问题,你所要做的就是以某种方式改变目录结构,或者改变路由的名称。

第一解决方案

移动目录public/adminpublic/assets/admin

第二方案

重命名:

Route::get('admin', ['as'=>'posts.home', 'uses' => 'AdminPostsController@home']);

Route::get('administration', ['as'=>'posts.home', 'uses' => 'AdminPostsController@home']);

如果这是你的问题,请告诉我:)