听起来您正在尝试将 Laravel 托管在您网站的子目录中。大多数时候,Laravel 应用程序托管在网站的根目录中,即yourdomain.com。但是,您希望您的 Laravel 应用程序显示在 yourdomain.com/laravel 中。正确的?首先,一个警告:
这不是托管 Laravel 应用的推荐方式
但是,如果您真的想将内容移动到子目录中,可以从以下方法开始。
在public/ 中创建子目录并将核心 Laravel 文件移动到那里
默认情况下,干净的 Laravel 安装在 public/ 文件夹中有以下文件:
public/
- .htaccess
- favicon.ico
- index.php
- robots.txt
- web.config
创建一个子目录并将这些文件移动到其中,例如如果您的子目录名为 laravel/,那么您的新结构将如下所示:
public/
- laravel/
- .htaccess
- favicon.ico
- index.php
- robots.txt
- web.config
请务必不要更改 Laravel 附带的 .htaccess 文件的内容。否则您的网站肯定无法运行。
更新 index.php 使其仍然可以找到 Laravel 核心
在public/laravel/index.php 中,您需要更新所有如下所示的行:
require __DIR__.'/../bootstrap/autoload.php';
看起来像:
require __DIR__.'/../../bootstrap/autoload.php';
应该有两行需要修改。
此时,如果有人要访问 yourdomain.com/laravel,他们将看到 Laravel 欢迎屏幕。您还可以像在app/Http/routes.php 中通常那样创建路由。例如,如果您的路线文件如下所示:
Route::get('/', function () {
return view('welcome');
});
Route::get('/hiya', function() {
return 'hiya!';
});
然后访问yourdomain.com/laravel/hiya 的人会在屏幕上看到“hiya”一词。
这可能会给你带来很多问题
如前所述,Laravel 通常不打算从子目录运行,因此以我描述的方式使用它可能会导致很多问题和意外行为。
但是,您仍然可以在您的 public/ 文件夹中托管静态文件,并以任何网站的方式提供它们。