如何在没有公开暴露/ app /文件夹的情况下将Laravel 4安装到虚拟主机子文件夹?
我想知道是否有人知道在Web主机SUBDIRECTORY /子文件夹中安装Laravel 4的方法,同时不会将/ app /文件夹和其他合理的文件暴露给主机的公开访问部分。
这个想法是,我可以访问http://mydomain.com/mylaravel/ ,以便能够使用Laravel,但同时我想避免任何人进入http://mydomain.com / app /或http://mydomain.com/mylaravel/app/ ,基本上可以看到我的configuration文件和其他代码。
所以我想出了如何做到这一点。 我会用一个例子来解释。
假设你是一个域, 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/   /public_html/是您的networking托pipe文件的公共可访问部分的根。 你想在/public_html/ (在这种情况下/public_html/yourlaravel4/ )创build一个子文件夹。 在这个子文件夹中,您将存储Laravel 4 public/文件夹的所有内容 。 
 现在,其余的文件。 你必须去你的网站托pipe文件的根,也就是说,你想在domain.com/级,因此能够看到public_html/和一些其他文件夹。 然后,我们需要在这里创build一个文件夹,其中Laravel 4的基本文件将被存储。 在这种情况下,它是domain.com/yourlaravel4_base/ 。 在yourlaravel4_base/里面,我们需要存储Laravel 4目录下的每个文件和文件夹。 这将是app/ , bootstrap/ , vendor/ server.php等。除了/public/文件夹,其内容已经存储在public_html/yourlaravel4/ 。 
 最后,我们需要编辑2个文件:Laravel的/bootstrap/paths.php和/public/index.php 。 
  在paths.php文件中,replace: 
 'app' => __DIR__.'/../app', 
有:
 'app' => __DIR__.'/../../yourlaravel4_base/app', 
  在paths.php文件中,replace: 
 'public' => __DIR__.'/../public', 
有:
 'public' => __DIR__, 
  在paths.php文件中,replace: 
 'base' => __DIR__.'/..', 
有:
 'base' => __DIR__.'/../../yourlaravel4_base', 
  在paths.php ,replace: 
 'storage' => __DIR__.'/../app/storage', 
有:
 'storage' => __DIR__.'/../../yourlaravel4_base/app/storage', 
  在index.php ,replace: 
 require __DIR__.'/../bootstrap/autoload.php'; 
有:
 require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php'; 
  在index.php ,replace: 
 $app = require_once __DIR__.'/../bootstrap/start.php'; 
有:
 $app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php'; 
 上传更改。 现在,您应该可以将Laravel 4安装在网站的子文件夹中,而不必实际公开app/文件夹和其他敏感文件。  🙂 
你可以使用一个别名:没有hankey-pankey在你的系统上有广泛的目录。
在你的httpd.conf或pipe理面板中指定:
 /mylaravel/ /path/to/laravel/public 
此外,在你的Laravel的app.php中指定URL
29号线
 'url' => 'http://yourdomain.com/mylaravel/', 
最终在/public/.htaccess中设置RewriteBase
 RewriteBase /mylaravel/ 
像魅力一样工作,并保持您的目录结构清洁,重点!
人,人! 没有必要过分复杂的事情!
  (对于其他的公用文件夹,如htdocs或www只需在下面的public_html中replace为你的。) 
-  把所有的Laravel的东西放在顶层文件夹中(这样app文件夹就在public_html文件夹的旁边)
-  将所有文件从public移动到public_html(一定要移动隐藏的文件,如.htaccess!)
- 删除现在为空的公用文件夹
- 
在 bootstrap/path.php改变'public' => __DIR__.'/../public','public' => __DIR__.'/../public_html',
- 完成。
伊曼纽尔答案不适合我,但我做了一些改变,使其工作。 虽然我用我的web根目录是一个项目的来源。 它在那里; 我有htdocs文件夹作为根文件夹,但你可能有其他,如public_html,www等。 你可以很容易地用你所拥有的replace我的htdocs。
好的。
我的灵魂
根/ 
       htdocs目录
      的.htaccess
       .override 
首先我解决了与composer php在windows上的本地主机上的所有laravel依赖项。 之后,我把整个软件包打包成了laravel4.zip。 在我的htdocs我创build一个laravel文件夹,我没有上传和解压zip文件。
  htdocs中/
         laravel /
                 应用
                 引导
                 上市 
                 供应商
                  ... 
所以在我解压缩文件后,我将公用文件夹中的所有内容都移动到htdocs文件夹中
  htdocs中/
         laravel
        包
        的.htaccess
         favicon.ico的
        的index.php
        的robots.txt 
现在我们必须重写htdocs / index.php和htdocs / laravel / bootstrap / paths.php中的一些path
但让我们打开htdocs / laravel / bootstrap / paths.php。 你会看到
'app'=> __DIR __。'/ .. / app',
这是什么意思 。 这意味着我们站在htdocs / laravel / bootstrap /path。 那里我们需要退出这个文件夹laravel文件夹然后去应用程序文件夹。 好 。 这是路由的laravel结构。 如果你得到这个权利,你可以使你的laravel运行。
找
'public'=> __DIR __。'/ .. / public',
并将其更改为
'public'=> __DIR __。'/ .. / .. / htdocs',
(简单的哈)与这些(../)这些我们可以上去一个文件夹。 所以现在我们在laravel文件夹。 但我们需要在htdocs。 所以我们必须写另一个(../)去那里。
打开htdocs / index.php并查找
需要__DIR __。'/ .. / bootstrap / autoload.php';
改成它
需要'laravel / bootstrap / autoload.php';
require是一个内置的php函数,所以我们将它视为一个简单的PHP。 我们不真的需要laravel风格来获取autoload.php文件。 所以简单地删除它,去古典风格
找
$ app = require_once __DIR __。'/ .. / bootstrap / start.php';
改成它
$ app = require_once'laravel / bootstrap / start.php';
如果您试图将Laravel 5.1运行到共享主机空间,上述所有答案似乎与实际的Laravel文件/文件夹有所不同,或者您正在寻找如何将laravel 5 / 5.1放入您的子目录中共享主机空间,以便您可以像这样访问它:
 http://mywebsite.com/mylaravel/ 
所以这个答案是给你的,首先确保你见面
Laravel 5.1要求:
 - PHP 5.5 - PHP extension Mcrypt - PHP extension Mbstring - PHP extension OpenSSL 
这里给你一个简单的两个教程:
链接1
链接2
如果您在面板中使用addondomain或者subdomaind向导,向导应该询问您的文档根目录。 例如我想addon droidman.com,向导应该build议我做droidman.com文件夹。 在这一步告诉向导使droidman.com/public文件夹。 然后把你的应用程序在droidman.com文件夹。 你的主机将查看公共文件夹;)。 问题解决了
如果你想简单地设置共享主机上的Laravel项目,你有cPanel访问,那么你可以做以下步骤,我已经遵循,它运作良好。
第1步:在本地机器上制作整个Laravel应用程序的zip或tar文件。
第2步:转到Cpanel。 上传zip / tar文件到public_html目录,然后解压缩。 (您也可以为您的laravel应用程序创build单独的文件夹。因为我想上传多个Laravel应用程序,我已经为每个应用程序创build了单独的目录,如下图所示。
  
 
步骤3:现在进入“Addon Domain”并更改指定域的文档根目录。 将该域指向公用文件夹。
  
 
现在检查你的域名将redirect到public / index.php文件。 没有必要改变任何path。
如果你使用的是Apache服务器,最简单的方法就是将你的Laravel应用程序存储在www根目录之外(或者保存在www根目录下的文件夹中),然后将所需的子文件夹链接到laravel中的公共文件夹
例如,我把我的laravel装置放在:
 /usr/local/share/myLaravel 
然后,在您的公共www文件夹中,创build一个符号链接:
 ln -s /usr/local/share/myLaravel/public mylaravel 
你需要对你的安装进行一些调整,比如把你的Rewrite Base放到/ mylaravel /中,并且确保你的configuration文件允许覆盖基本位置,但这比修改所有东西简单。
请务必检查您的权限。 我通过以下部署,虽然我不推荐它。
我使用SSH并做了类似的事情:
 rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING ln -s project_folder/public/ public_html // where the format is ln -s target name 
之后,我会收到一条消息,例如“Whoop,看起来像是出了什么问题”(或者根据您的debugging设置发生错误)。 要解决这个问题, 我只需要将我的权限更改为我的文件夹755 。 参考: http : //kb.webhostface.com/laravel/fix-permission-denied-error-laravel
总的来说,我将回去尝试改变权限的原始方式,因为我发现这条路线不太安全,更依赖于我的托pipe客户服务。
*****注意*****这个命令显然会删除你的public_html(有时也称为public或www)文件夹。 您需要备份其中的所有文件,因为您正在删除它。 另外,您需要准备好通过客户服务来恢复它。 许多托pipe服务不允许您自行重新创build文件夹。