![](/img/trans.png)
[英]Hosting two different applications running on Laravel 4 on shared hosting - part 2
[英]Hosting two different applications running on Laravel 4 on shared hosting
我即將開始使用Laravel4開發網站,該網站將包含托管在子域中的cms。 我想知道是否有辦法在兩個應用程序之間共享主要的Laravel安裝?
我使用以下示例在測試中取得了各種成功: Laravel完整URL路由 ,但是我想將app文件夾中的功能分開,並使用諸如app_main,app_cms之類的東西來保存每個模型的相關模型,視圖和控制器網站在那里。
在如何針對這樣的要求設置Laravel方面,我似乎找不到太多幫助,因此對此的任何幫助都將非常有用。
我有一個多主機解決方案,登錄到FTP后包含以下文件夾:
domaina.com
domainb.com
domainc.com
如果我想在這些網站之間共享相同的Laravel代碼,則只需在同一級別上創建“ Laravel”文件夾,因此它看起來像這樣:
domaina.com
domainb.com
domainc.com
laravel
該“ laravel”文件夾包含除“ app”和“ public”目錄以外的所有內容。
我只是將“公共”目錄的內容直接放在“ domaina.com”文件夾中(例如)。 打開“ index.php”並調整這些行以匹配實際位置。 現在你可以走了
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
bootstrap/paths.php
包含主文件夾定義。 對於每個實例,您可以從文件更改app文件夾,公用文件夾,基本文件夾,存儲文件夾等。
您可以設置Cookie /會話,或檢查主域和子域的域等,並進行如下更改:
'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app',
為此使用路由器。
例如
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
});
為了便於維護,可以將名稱空間用於控制器。
例如,您的控制器文件夾如下所示
App
|
|---Controllers
|-- site
|
|-----HomeController.php
|-- subdomain
|
|-----HomeController.php
現在,對於站點控制器,請使用諸如<?php namespace site;?>
類的namspace <?php namespace site;?>
對於子域控制器,請使用<?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'
))
});
簡單明了的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.