2013-06-04 13 views
5

Mi chiedevo se qualcuno può dirmi quali sono le modifiche al lato server che devono essere eseguite quando si cambia la modalità in html5 in Angular js. perché quando ho provato a cambiarlo in modalità html 5 non sono riuscito a entrare nelle mie pagine html interne. nell'API angolare si dice che anche gli utenti che hanno bisogno di apportare modifiche al lato server.Modifiche al lato server in modalità html5 angolare

  1. quali sono lato server cambia
  2. abbiamo bisogno di fare altre modifiche come bene?
+0

Non l'ho ancora fatto, ma credo che sia necessario riscrivere i tuoi URL in modo che puntino al tuo index.html (cioè il server mostrerà '/ index.html' quando richiedi qualcosa come'/contatto/london-per ufficio di). Se usi Apache, guarda in mod_rewrite'. –

risposta

0

Si dovrebbe distinguere due tipi di chiamate:

  1. chiamate HTML dal browser. Questi dovrebbero essere tutti rimappati per servire il tuo indice o qualsiasi altra cosa.
  2. Richieste API JSON. Questi dovrebbero passare attraverso il tuo server app.

Come distinguere tra questi due tipi di chiamate e come rimappare il primo, dipende fortemente dalla configurazione.

Se si sta utilizzando nginx, per esempio, una combinazione di controllo $ HTTP_ACCEPT di essere application/json (vedi http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requests e http://wiki.nginx.org/HttpCoreModule#.24http_HEADER) e riscrivere (http://wiki.nginx.org/HttpRewriteModule#rewrite) è possibile ottenere ciò che si desidera.

0

è necessario configurare il server di riscrivere tutto per index.html per: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode ...

<VirtualHost *:80> 
    ServerName my-app 

    DocumentRoot /path/to/app 

    <Directory /path/to/app> 
     RewriteEngine on 

     # Don't rewrite files or directories 
     RewriteCond %{REQUEST_FILENAME} -f [OR] 
     RewriteCond %{REQUEST_FILENAME} -d 
     RewriteRule^- [L] 

     # Rewrite everything else to index.html to allow html5 state links 
     RewriteRule^index.html [L] 
    </Directory> 
</VirtualHost> 

mia app è PARAMS passato a un controllore (tramite ui-router) quindi prima html5mode vorrei goto www.blah.com/angapp/#/myUIrouterController?param_x=1 & param_y = 2 I browser indovinatori sanno che/#/la parte del percorso della cartella dovrebbe servire index.html.

Ora che # sarebbe andato con html5mode, il server di default non sa di servire index.html per quella cartella dato che l'URL sarà solo: www.blah.com/angapp/myUIrouterController?param_x= 1 & param_y = 2 myUIRouterController non è un file reale quindi il server servirebbe solo un 404, Quindi perché penso che le riscritture siano necessarie in modo che sappia inviare tutto a index.html (così sopra in combinazione con la base < > il tag dovrebbe funzionare ... nota: requireBase è facoltativo ma ascoltato aiuta i browser più vecchi come IE9 forse).