在共享主机上托管在Laravel 4上运行的两个不同应用程序

时间:2013-10-04 10:40:47

标签: php dns laravel

我即将开始使用Laravel4开发网站,该网站将包含托管在子域上的cms。我想知道是否有办法在两个应用程序之间共享主要的Laravel安装?

我在使用以下示例进行测试方面取得了各种成功:Laravel full URL routing但是我希望将应用程序文件夹中的功能保持独立,并使用say,app_main,app_cms来保存相关模型,视图和那里的每个站点的控制器。

在如何设置Laravel以满足这样的要求方面似乎没有太多帮助,所以对此的任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

我有一个多主机解决方案,登录到FTP后包含这个文件夹:

domaina.com
domainb.com
domainc.com

如果我想在这些网站之间共享相同的Laravel代码, 我只是在同一级别创建'Laravel'文件夹,所以它看起来像这样:

domaina.com
domainb.com
domainc.com
laravel

这个'laravel'文件夹包含除“app”和“app”之外的所有内容。 'public'目录。

我只是将'public'目录的内容放在'domaina.com'文件夹中(例如)。 打开'index.php'并调整这些行以匹配实际位置。 现在你很高兴

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

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

答案 1 :(得分:0)

bootstrap/paths.php包含主文件夹定义。对于每个实例,您可以从文件中更改应用程序文件夹,公用文件夹,基本文件夹,存储文件夹等。

您可以为主要和子域设置cookie /会话,或检查域等,并将其更改为:

'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app',

答案 2 :(得分:0)

使用路由器。

e.g。

Route::group(array('domain'=>'example.com'), function(){
//Define the routes for example.com
});

Route::group(array('domain'=>'cms.example.com'), function(){
//Define the routes for cms.example.com
});

为了更容易使用maintanace,您可以使用名称空间来控制器。

e.g。您的控制器文件夹可能如下所示

App
|
|---Controllers
    |-- site
        |
        |-----HomeController.php

    |-- subdomain
        |
        |-----HomeController.php

现在,对于站点控制器,请使用类似<?php namespace site;?>

的namspace

对于子域控制器,请使用<?php namespace subdomain;?>

之类的命名空间 路径文件中的

,将路由定义为

Route::group(array('domain'=>'example.com'), function(){
    Route::get('/', array(
       'as' => 'index',
       'uses' => '\site\HomeController@index'
    ))
});

表示子域名,

Route::group(array('domain'=>'cms.example.com'), function(){
    Route::get('/', array(
       'as' => 'cms.index',
       'uses' => '\subdomain\HomeController@index'
    ))
});

简单明了。