我来这里是为了解决这种情况的最佳做法。我在Slim / rewrite / htaccess上提出了一些问题,但没有成功。这里没遇到任何问题,我只是不知道这是不是一个好习惯。
因此,使用Slim Framework 3,我有一个主域 www.domain.com ,以及一个子域 api.domain.com 。
当我输入地址栏 api.domain.com/messages 时,它会通过透明度调用 www.domain.com/api/messages ,而不是重定向。
为了实现这个技巧,我把它放在我的index.php文件中:
branchid , branchname
它运作良好,我不想花时间重写规则......但如果有人有建议,我很感激!
感谢您阅读!
答案 0 :(得分:0)
您可以通过index.php文件在根目录中创建api目录来处理api请求。所以在你的public / 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();
答案 1 :(得分:0)
是的,它就是!就我而言,我为每个子域创建了一个文件夹,一个用于我的网站和一个公共文件夹:
所有子域都指向 public 文件夹中的 index.php 。然后 index.php 用 http_host 切换问题文件夹中的好应用文件(如src / api / app.php)。
在每个子文件夹(api,admin,...)中,与app文件,数据库架构,视图与否,资源相同的结构,......
像这样,所有部分都有分离的文件系统,但它们共享相同的数据库和供应商。我阻止我需要这个结构来满足特定需求。我不想为每个部分安装Slim ......
感谢您的帮助!