htacess子域到域文件夹使用Slim Framework不可见

时间:2017-03-23 17:59:40

标签: php .htaccess subdomain slim

我来这里是为了解决这种情况的最佳做法。我在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

它运作良好,我不想花时间重写规则......但如果有人有建议,我很感激!

感谢您阅读!

2 个答案:

答案 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)

是的,它就是!就我而言,我为每个子域创建了一个文件夹,一个用于我的网站和一个公共文件夹:

  • 公共
  • SRC
    • API
    • 游戏
    • 应用
    • 管理员
    • WWW
  • 供应商

所有子域都指向 public 文件夹中的 index.php 。然后 index.php http_host 切换问题文件夹中的好应用文件(如src / api / app.php)。

在每个子文件夹(api,admin,...)中,与app文件,数据库架构,视图与否,资源相同的结构,......

像这样,所有部分都有分离的文件系统,但它们共享相同的数据库和供应商。我阻止我需要这个结构来满足特定需求。我不想为每个部分安装Slim ......

感谢您的帮助!