从 laravel 控制器中删除 public 后不起作用?

Posted

技术标签:

【中文标题】从 laravel 控制器中删除 public 后不起作用?【英文标题】:After removing public from laravel controller not working? 【发布时间】:2017-01-15 04:18:22 【问题描述】:

我已经安装了 laravel 5 和 localhost/laravel/public 显示 laravel 的登陆页面。一旦我使用 php artisan 命令创建了一个控制器 hello 并创建了 htaccess 文件,如下所示的 hello 控制器显示页面未找到。请帮我解决这个错误

 RewriteEngine On
 RewriteRule ^(.*)$ public/$1 [L]

routes.php 文件

 Route::get('/', function () 
return view('welcome');
);


 Route::get('/hello', 'Hello@index');

hello.php 控制器文件

 <?php

  namespace App\Http\Controllers;

 use Illuminate\Http\Request;

   use App\Http\Requests;

 class Hello extends Controller

public function index()
    
    echo "test";
  

【问题讨论】:

【参考方案1】:

这很有趣,但事实是控制器不依赖于公共文件夹。如果你将public文件夹的文件复制到另一个目录并完美地包含index.php中的其他文件,那么它肯定会起作用。

require __DIR__.'/../bootstrap/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

更改这两行目录,以便 index.php 可以完美地包含这两个文件。

【讨论】:

【参考方案2】:

解决了自己

从 laravel 5 url 中删除 public 的简单方法。您只需从公共目录中剪切 index.php 和 .htaccess 并将其粘贴到根目录中即可,并将 index.php 中的两行替换为

  require __DIR__.'/bootstrap/autoload.php';
  $app = require_once __DIR__.'/bootstrap/app.php';

【讨论】:

以上是关于从 laravel 控制器中删除 public 后不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6:使用 htaccess 从 URL 中删除 Public

试图从 url Laravel 中删除 public

如何以正确的方式从 laravel 5 url 重写或删除 public?

如何从 laravel 5 中的 url 中删除 public/index.php?

从 url laravel 5.4 中删除公共

Laravel 7.x - 如何从 URL 中删除“公共”?