从 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
如何以正确的方式从 laravel 5 url 重写或删除 public?