2015-02-05 21 views
5

Desidero puntare più sottodomini e/o domini radice su una singola applicazione Play Framework 2.3 (Scala), ad esempio apples.com, bananas.com o buy.bananas.com.Percorsi domini in Play Framework 2.3

A seconda del dominio della richiesta, desidero avere percorsi diversi.

Idealmente, dovrebbe funzionare qualcosa di simile:

GET apples.com  @controllers.ApplesController.home 
GET bananas.com  @controllers.BananasController.home 
GET buy.bananas.com @controllers.BananasController.buy 

Esiste un modo per fare questo in Play Framework 2.3?

+5

Cose come questa sono gestite meglio dai server http ... Non dai framework. Tuttavia, è possibile ottenere alcune di tali funzionalità. Per maggiori dettagli, consultare -> http://typesafe.com/activator/template/play-multidomain-seed e https://github.com/adrianhurt/play-multidomain-seed/blob/master/app/Global.scala –

+1

@SarveshKumarSingh scrive una risposta invece di un commento, è un buon punto per aumentare/accettare – biesior

+0

@biesior L'ambito della soluzione non si adatta a una risposta. Troppe cose da capire e tutto il progetto deve essere creato in un modo particolare. –

risposta

5

sto lavorando in Java Qui è il modo per farlo in java che forse potrebbe aiutare

percorsi

GET /   @controllers.ApplesController.index 
GET /apples  @controllers.ApplesController.home 
GET /bananas  @controllers.BananasController.home 
GET /buybananas @controllers.BananasController.buy 

regolatore

@With(CheckUrl.class) 
public static Result index() { 
     return ok(index.render("Unable to resolve host.")); 
    } 

CheckUrl.java

public class CheckUrl extends play.mvc.Action.Simple { 

    public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable { 

     String host = request().host(); 
     System.out.println("HOST IS "+host); 

       if (host.equalsIgnoreCase("apples.com")) { 

      return F.Promise.pure(redirect("/apples")); 

     }else if (host.equalsIgnoreCase("bananas.com ")){ 

     return F.Promise.pure(redirect("/bananas")); 

     }else if (host.equalsIgnoreCase("buy.bananas.com")){ 

     return F.Promise.pure(redirect("/buybananas")); 
     }else{ 
      return delegate.call(ctx); 
     } 



} 

I non so se è il modo migliore di farlo. L'ho provato con request().uri() ma non con request().host() e che ha funzionato per me. Forse potrebbe aiutare.

+1

Questa è una soluzione al mio problema, grazie. Assicurati di controllare anche il link Github che l'altro utente ha postato come commento sulla mia domanda. In realtà è un modo più bello e più pulito di farlo secondo me, quindi potrebbe essere utile anche a te. –

Problemi correlati