2017-03-23 2 views
0

Ich komme hierher, um Sie auf der Best Practice für diese Situation zu fragen. Ich habe einige andere Fragen auf Slim/rewrite/htaccess, aber keinen Erfolg. Kein Problem hier, ich weiß nur nicht, ob es eine gute Übung ist.htacess Subdomain Domain-Ordner unsichtbar mit Slim Framework

Also, mit Slim-Framework 3, ich habe eine Haupt-Domain www.domain.com, und eine Sub-Domain api.domain.com.

Wenn ich in der Adresszeile setzen api.domain.com/messages, nennt es www.domain.com/api/messages mit Transparenz, keine Umleitung.

diesen Trick zu erreichen, ich habe dies in meiner Datei index.php:

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

Es funktioniert sehr gut, und ich will keine Zeit mit Umschreiben Regeln verbringen ... Aber wenn jemand hat eine Vorschlag, ich schätze es!

Vielen Dank für das Lesen!

+0

Warum möchten Sie eine Subdomain verwenden, wenn Ihre Anwendung den Endpunkt/api bereits interpretiert? –

+0

Hallo! Ich möchte Apps, Spieleergebnisse, arduino & offene Daten an diese API in Zukunft anschließen, und ich habe eine Website auf der ** www.domain.com **. Ich bevorzuge eine Adresse wie ** api.domain.com/Spiel/Space-Invaders ** anstatt ** www.domain.com/api/Spiel/Space-Invaders ** – Seb00ch

Antwort

0

Eine Möglichkeit ist es, ein API-Verzeichnis in Ihrem Wurzelverzeichnis mit einer index.php-Datei zu erstellen, um Ihre API-Anfragen zu bearbeiten. Also in Ihrem public/index.php Datei, die Sie hinzufügen könnten:

// 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(); 

Und dann behandelt Ihre api Routen separat in dem api/index.php:

// 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

Ja, es ist! Für meinen Fall habe ich einen Ordner für jede Sub-Domain, eine für meine Website und eine öffentliche:

  • öffentlichen
  • src
    • api
    • Spiel
    • App
    • Admin
    • www
  • Anbieter

Alle Sub-Domains verweisen auf meine index.php im öffentlichen Ordner. Dann index.php mit http_host die gute App-Datei im fraglichen Ordner (wie src/api/app.php) wechseln.

In jedem Unterordner (api, admin, ...), die gleiche Struktur mit einer App-Datei, Datenbank-Schema, Ansichten oder nicht, Ressourcen, ...

wie dies alle Teile Dateisystem getrennt haben, aber sie teilen sich die gleiche Datenbank und Anbieter. Ich verhindere, dass ich diese Struktur für ein bestimmtes Bedürfnis brauche. Ich möchte kein Slim für jedes Teil installieren ...

Vielen Dank für Ihre Hilfe!