如何将Laravel应用程序部署到子目录

时间:2020-07-07 04:07:10

标签: php laravel .htaccess laravel-7

我是Laravel框架的新手,所以这个问题可能有点愚蠢,但这是问题所在:

我在本地计算机上有一个小项目,现在我需要将项目部署到实时环境(共享主机)中。

问题是,我的项目需要存储在主域的子目录(子文件夹)中(例如,我的域将为 main.com ,并且项目将为在 main.com/my-project )。 我在主域的public_html内创建了一个子文件夹,然后将项目上传到该子目录。最初,当我进入url main.com/my-project 时,我看到一个目录树(例如localhost),然后需要单击“公用文件夹”以转到我的应用程序。因此,我在互联网上寻找解决方案,并尝试了.htaccess方式,这是我的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/project/public/
    RewriteRule ^(.*)$ /project/public/$1 [L,QSA]
</IfModule>

但是当我重新加载URL main.com/my-project 时,我一直收到未找到的消息URL请求。

我已经为这个问题苦苦挣扎了一段时间,但仍然没有弄清楚。知道如何解决这个问题吗?请帮帮我,谢谢。

2 个答案:

答案 0 :(得分:1)

谢谢你们的帮助,实际上我已经以某种方式弄清楚了。对于那些可能遇到像我一样遇到同样问题的人,这是我的解决方案:

在/ public_html内,我创建了一个文件夹并将其命名为my-project。在my-project文件夹中,我将所有文件和资产文件夹(css,js)和.htaccess文件放在此处。

然后,我回到父级(与/ public_html相同),创建了一个文件夹,并将其命名为app-core。我将所有其他Laravel的文件夹和文件放在这里。

结构将是这样的:

public_html

=app-core
--- All others files & folders except **public**
=my-project
--- index.php
--- css
--- js
--- .htaccess

最后,我回到编辑index.php的地方:

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

并保存它,一切准备就绪!

答案 1 :(得分:0)

首先,您必须复制my-project目录中的所有laravel文件和文件夹。

然后在公用文件夹中,您可以看到index.php.htaccess以及其他文件和文件夹在主文件夹my-project中的剪切。

然后打开index.php并更改require __DIR__.'/vendor/autoload.php';

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

然后,您必须正确设置css文件和js文件,否则它将无法正常工作