如何将Laravel站点放在共享主机上,该主机在子目录中有多个其他站点?

时间:2017-01-22 17:29:32

标签: php laravel laravel-5 shared-hosting

我的机器上有一个本地运行的Laravel网站,但我想让它生效。我已经为共享主机付费了,我在他们自己的子目录中的共享主机上运行了许多站点。例如,在共享主机中,我有:

public_html/site1
public_html/site2
etc.

这些都是个人网站。所以我也想把我的Laravel网站放在那里:

public_html/laravelsite

问题是我显然不希望大多数文件实际上可以公开访问。如果我将它们拆开并将public站点文件放入public_html/laravelsite并将其余文件放在public_html上方的文件夹中,则无法找到任何其他内容并且该网站赢得了#39工作。

我可以使用另一种解决方法来保护我的文件吗?

3 个答案:

答案 0 :(得分:0)

尝试打开AppServiceProvider.php并修改如下:

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('path.public', function() {
            return base_path().'/public_html/laravelsite';
        });
    }
}

并将公用文件夹的内容放到laravelsite文件夹中。

答案 1 :(得分:0)

当用户请求您的网站时,起点始终为public/inde.php。因此,将公共文件夹放在您想要的位置,将其余部分(Laravel)放在您想要的位置。然后从public/index.php开始,尝试关联bootstrap/autoload.php

例如,在您的情况下,您将转到public/index.php并更改第22行和第36行,这样他们仍然可以找到autload.php文件,如下所示:

22. require __DIR__.'/../bootstrap/autoload.php'; 

成为

22. require __DIR__.'/../../laravel_folder/bootstrap/autoload.php';

并且

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

成为

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

还有其他方法可以做到这一点。找到适合您需求的那个。

对于Elixir,&#34; ...您可以使用./开始任何文件路径。这指示Elixir从项目根开始,而不是使用默认的基本目录&#34;。资料来源:https://laravel.com/docs/5.3/elixir。所以你做了类似的事情来改变源

elixir(function(mix) {
    mix.sass('./app/assets/sass/app.scss');
});

您也可以这样做来更改目的地。 现在,如果您想最小化dev和prod之间的差异,请在dev中重新组织您的文件夹,使其具有类似的结构。

答案 2 :(得分:0)

最明显的解决方案 - 只是告诉您的服务器不提供/public_html/laravelsite的文件?

例如,如果您的共享托管使用的是apache,请使用

.htaccess中创建/public_html/laravelsite文件
Deny from all

然后转到.htaccess目录中的laravel的public文件并添加

Allow from all