如何在没有公开暴露/ app /文件夹的情况下将Laravel 4安装到Web主机子文件夹?

Emm*_*ola 60 install subdirectory laravel laravel-4

我想知道是否有人知道在Web主机SUBDIRECTORY /子文件夹中安装Laravel 4的方法,而不是将/ app /文件夹和其他敏感文件暴露给主机的公共可访问部分.

我的想法是,我可以访问http://mydomain.com/mylaravel/以便能够使用Laravel,但与此同时我想避免任何人做某事像去http://mydomain.com/app /http://mydomain.com/mylaravel/app/,基本上能够看到我的配置文件和其他代码.

Emm*_*ola 64

所以我想出了如何做到这一点.我将用一个例子来解释.

假设您是域名http://domain.com.以下是您可能使用的结构示例:

domain.com/    (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/    (where your html files and such go)
|   |-- [some other folders...]
|   |-- yourlaravel4/
Run Code Online (Sandbox Code Playgroud)

/public_html/是您的Web托管文件的公共可访问部分的根.您想在/public_html/(在这种情况下/public_html/yourlaravel4/)创建一个子文件夹.在此子文件夹中,您将存储Laravel 4 文件夹的所有内容public/.

现在,对于其余的文件.你必须去你的网络托管文件的根目录,也就是说,你想要在domain.com/水平,因此能够看到public_html/和其他一些文件夹.然后,我们需要在这里创建一个文件夹,其中将存储Laravel 4的基本文件.在这种情况下,它是domain.com/yourlaravel4_base/.在内部,yourlaravel4_base/我们需要存储基本Laravel 4目录中存在的每个文件和文件夹.这将是app/,bootstrap/,vendor/,server.php,等一切EXCEPT /public/文件夹,其内容你已经存储在public_html/yourlaravel4/.

最后,我们需要编辑2个文件:Laravel /bootstrap/paths.php/public/index.php.


paths.php文件中,替换:

'app' => __DIR__.'/../app',
Run Code Online (Sandbox Code Playgroud)

有:

'app' => __DIR__.'/../../yourlaravel4_base/app',
Run Code Online (Sandbox Code Playgroud)

paths.php文件中,替换:

'public' => __DIR__.'/../public',
Run Code Online (Sandbox Code Playgroud)

有:

'public' => __DIR__,
Run Code Online (Sandbox Code Playgroud)

paths.php文件中,替换:

'base' => __DIR__.'/..',
Run Code Online (Sandbox Code Playgroud)

有:

'base' => __DIR__.'/../../yourlaravel4_base',
Run Code Online (Sandbox Code Playgroud)

paths.php,替换:

'storage' => __DIR__.'/../app/storage',
Run Code Online (Sandbox Code Playgroud)

有:

'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',
Run Code Online (Sandbox Code Playgroud)

index.php,替换:

require __DIR__.'/../bootstrap/autoload.php';
Run Code Online (Sandbox Code Playgroud)

有:

require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';
Run Code Online (Sandbox Code Playgroud)

index.php,替换:

$app = require_once __DIR__.'/../bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)

有:

$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)

上传更改.现在,您应该可以将Laravel 4安装在网站的子文件夹中,而不会实际暴露app/文件夹和其他敏感文件.:)


Tom*_*Tom 28

您可以使用别名:no hankey-pankey,系统上包含广泛的目录.

在httpd.conf或admin-panel中指定:

/mylaravel/ /path/to/laravel/public
Run Code Online (Sandbox Code Playgroud)

此外,在Laravel的app.php中指定URL

第29行

'url' => 'http://yourdomain.com/mylaravel/',
Run Code Online (Sandbox Code Playgroud)

最终在/public/.htaccess中设置RewriteBase

RewriteBase /mylaravel/
Run Code Online (Sandbox Code Playgroud)

像魅力一样工作,保持您的目录结构清洁,重点!


小智 7

人,人!不需要过于复杂的事情!

(对于其他公用文件夹,例如htdocs或者www只是替换public_html以下文件夹.)

  1. 将所有Laravel内容放在顶级文件夹中(以便app文件夹位于文件夹旁边public_html)
  2. 将所有文件移动publicpublic_html(确保也移动隐藏文件,例如.htaccess!)
  3. 删除现在为空的public文件夹
  4. bootstrap/path.php改变

    'public' => __DIR__.'/../public',

    'public' => __DIR__.'/../public_html',

  5. 完成.

  • 这就是我做的..子弹证明,对吗?如果您不希望在公共目录中看到`app /`,**不要**将其放在公共目录中! (2认同)