将 Yii 2 应用程序部署到文档根目录的子目录

Deploying a Yii 2 app to a subdirectory of the document root

我想将 Yii 2 应用程序部署到网站的子目录:

http://example.com/subdirectory

我的应用程序的目录结构如下所示:

|-- LICENSE.md
|-- README.md
|-- assets
|-- commands
|-- components
|-- composer.json
|-- composer.lock
|-- config
|-- controllers
|-- mail
|-- models
|-- requirements.php
|-- runtime
|-- test.php
|-- test.txt
|-- tests
|-- vendor
|-- views
|-- web
|-- yii
`-- yii.bat

According to Yii 2's documentation,为了部署,您应该将 web 文件夹重命名为服务器的文档根目录,如 public_htmlwwww 等。然后您将所有文件复制到文档根目录的父目录。但是没有说明如何将应用程序部署到文档根目录的 子目录

主机是 Apache,我想知道使用别名是否是最简单的方法。不过,我不确定 the documentation on mod_alias 使用哪个指令或应该去哪里。

你推荐什么?

结果比我想象的要简单。

  1. web 目录移动到您的文档根目录(例如,public_htmlwww 等)。
  2. web 目录重命名为您希望在域名后显示的方式。例如,如果您希望您的应用位于 http://example.com/myapp,则将 web 重命名为 myapp
  3. 将您的应用程序目录(现在应该减去 web 子目录)移动到文档根目录上方的一个目录。
  4. web目录下,更改index.php中三个require函数的路径。

我修改后的 index.php 看起来与下面类似。 (如果你复制粘贴,记得把 your_app_name 替换成你的应用程序目录的名称。另外请注意,我的文档根目录中有多个网站,所以我必须获取web 文件夹,使其脱离文档根目录。哇。)

<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../../../your_app_name/vendor/autoload.php');
require(__DIR__ . '/../../../your_app_name/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../../../your_app_name/config/web.php');

(new yii\web\Application($config))->run();