我的机器上有一个本地运行的Laravel网站,但我想让它生效。我已经为共享主机付费了,我在他们自己的子目录中的共享主机上运行了许多站点。例如,在共享主机中,我有:
public_html/site1
public_html/site2
etc.
这些都是个人网站。所以我也想把我的Laravel网站放在那里:
public_html/laravelsite
问题是我显然不希望大多数文件实际上可以公开访问。如果我将它们拆开并将public
站点文件放入public_html/laravelsite
并将其余文件放在public_html上方的文件夹中,则无法找到任何其他内容并且该网站赢得了#39工作。
我可以使用另一种解决方法来保护我的文件吗?
答案 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