Laravelアプリケーションをセカンダリディレクトリにデプロイする方法

PHPz
リリース: 2023-04-03 18:43:20
オリジナル
933 人が閲覧しました

在实际的Web开发中,我们经常需要将我们的Web应用程序部署在服务器的某个子目录下,比如二级目录。这样做的好处是在同一个域名下,可以部署多个应用程序而不会产生冲突。

在本文中,我们将会介绍如何将Laravel应用程序部署在二级目录下。

  1. 修改 .htaccess 文件

首先,我们需要修改 .htaccess 文件,让它能够正确地处理二级目录的URL。通常情况下,Laravel 安装目录下的 .htaccess 文件的内容如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
ログイン後にコピー

我们需要将其中的 RewriteRule 改为如下所示:

RewriteRule ^二级目录名称(/(.*))?$ 二级目录名称/index.php$2 [L]
ログイン後にコピー

比如,假设我们的二级目录名称为 laravel,那么修改后的 .htaccess 文件内容如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^laravel(/(.*))?$ laravel/index.php$2 [L]
</IfModule>
ログイン後にコピー
  1. 修改 index.php 文件

接下来,我们需要修改 Laravel 安装目录下的 index.php 文件,让它能够正确地处理二级目录的 URL。

在 index.php 文件的开头,我们需要添加以下代码:

$baseUrl = '/二级目录名称';
ログイン後にコピー

比如,假设我们的二级目录名称为 laravel,那么添加后的 index.php 文件开头部分的代码如下:

<?php

$baseUrl = &#39;/laravel&#39;;

// ...
ログイン後にコピー

然后,我们需要修改 $app 变量的定义,让它能够正确地获取基础 URL。将以下代码:

$app = require_once __DIR__.&#39;/../bootstrap/app.php&#39;;
ログイン後にコピー

改为:

$app = require_once __DIR__.$baseUrl.&#39;/bootstrap/app.php&#39;;
ログイン後にコピー

最后,在返回响应之前,我们需要将下面的代码:

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
ログイン後にコピー

更改为:

$request = Illuminate\Http\Request::capture();
$request->server->set('SCRIPT_NAME', $baseUrl.'/index.php');
$request->server->set('SCRIPT_FILENAME', __DIR__.$baseUrl.'/index.php');
$response = $kernel->handle($request);
ログイン後にコピー

至此,Laravel 应用程序在二级目录下的部署就完成了。

总结

在本文中,我们介绍了如何将 Laravel 应用程序部署在二级目录下。首先,我们需要修改 .htaccess 文件,让它能够正确地处理二级目录的 URL,然后我们还需要修改 index.php 文件,让它能够正确地获取基础 URL。希望本文对您有所帮助。

以上がLaravelアプリケーションをセカンダリディレクトリにデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート