2017-03-23 31 views
0

我來這裏問你的最佳實踐這種情況。我在Slim/rewrite/htaccess上還有其他一些問題,但沒有成功。這裏沒有遇到任何問題,我只是不知道這是不是一個好習慣。htacess子域到Slim框架不可見的域文件夾

因此,搭配修身框架3,我有一個主域名www.domain.com,和一個子api.domain.com

當我把地址欄api.domain.com/messages,它調用www.domain.com/api/messages透明,沒有重定向。

爲了實現這一招,我把這個在我的index.php文件:

if ($_SERVER['HTTP_HOST'] == 'api.domain.com') { 
    $_SERVER['REQUEST_URI'] = '/api' . $_SERVER['REQUEST_URI']; 
} 

它工作得很好,我不想花時間與重寫規則......但是,如果有人有建議,我欣賞它!

謝謝您的閱讀!

+0

如果您的應用程序alreay解釋/ api端點,爲什麼要使用子域? –

+0

嗨!我想在未來將應用程序,遊戲結果,arduino和開放數據添加到此api中,並且我在** www.domain.com **上有一個網站。我更喜歡有** api.domain.com/game/space-invaders **這樣的地址,而不是** www.domain.com/api/game/space-invaders ** – Seb00ch

回答

0

你可以這樣做的一種方法是在你的根目錄下用index.php文件創建一個api目錄來處理你的api請求。因此,在您的公共/ index.php文件,你可以添加:

// public/index.php 
chdir(dirname(__DIR__)); 

require_once 'vendor/autoload.php'; 

// api domain so include the api routes 
if ($_SERVER['HTTP_HOST'] == "api.domain.com") { 
    require 'api/index.php'; 
    exit; 
} 

// -------------------------------------------- 
// non api domain 

$app = new Slim\App; 

$app->get('/',function($request,$response) { 
    return $response->write("I'm not the API site!"); 
}); 

$app->run(); 

然後在API/index.php文件單獨處理您的API路線:

// api/index.php 
$app = new Slim\App; 

$app->get('/',function($request,$response) { 
    return $response->withJson('base api'); 
}); 

$app->group('/game',function() { 

    $this->get('',function($request,$response) { 
     return $response->withJson('Select a game'); 
    }); 

    $this->get('/space-invaders',function($request,$response) { 
     return $response->withJson('Space Invaders API'); 
    }); 

    $this->get('/pacman',function($request,$response) { 
     return $response->withJson('Pac Man API'); 
    }); 
}); 

$app->run(); 
0

是有啊!對於我而言,我做了一個文件夾的每個子域,一個爲我的網站和公衆:

  • 公共
  • SRC
    • API
    • 遊戲
    • 應用
    • 管理
    • www
  • 廠商

所有的子域名指向我的index.php在公共文件夾。然後index.php切換http_host問題文件夾中的好應用程序文件(如src/api/app.php)。

在每個子文件夾(API,管理,...),相同的結構與應用程序文件,數據庫架構,觀點與否,ressources,...

這樣,所有的部件都分離的文件系統,但他們共享相同的數據庫和供應商。我阻止我需要這種結構來滿足特定的需求。我不想爲每個零件安裝Slim ...

謝謝你的幫助!