2013-10-16 21 views
5

Ora sto integrando il fantasma nella mia applicazione Web basata su Angularjs.Aggiunta di un prefisso hash nella fase di configurazione se manca

This l'articolo dice che dovrei chiamare il metodo $locationProvider.hashPrefix() per impostare il prefisso su "!" per ragioni SEO (consentire ai crawler di intercettare il componente _escaped_fragment dell'URL).

Il problema è che non ho pensato al precedente, e alcuni dei miei URL hanno il seguente aspetto: #/home.

Anche se forse c'è un modo in cui posso impiantare questo '!' char in elemosinare l'URL a livello di codice (nel caso non sia già lì) nella funzione di configurazione della APP, invece di dover modificare un sacco di markup manualmente.

+0

Quale "markup" dovresti modificare manualmente? Hai un sacco di url hardcoded da qualche parte? – tennisgent

+0

Alcuni, sì –

+0

Ho avuto un problema simile. Attualmente vedo questo errore quando uso il prefisso sbagliato. 'Errore: url non valido "un URL" mancante prefisso hash "#!".' Per gli utenti che hanno collegamenti al vecchio schema di URL, sarebbe bello essere in grado di gestire l'errore o che il router utilizzi la funzione altrimenti. – freakTheMighty

risposta

4

Ho avuto un problema simile e manualmente (ricerca/sostituzione) ha esaminato tutti i collegamenti e li ha corretti.

L'altro problema che ho avuto è stato il siti esterni stavano usando il vecchio formato cioè http://plinkplink.net/#/event/3 al posto del nuovo formato http://plinkplink.net/#!/event/3

La correzione che ho fatto per questo non è propriamente angularjs idiomatica, ma fa il lavoro . Ho aggiunto questo script all'intestazione della mia pagina. Semplicemente reindirizza le pagine con # alle pagine con # !:

<script> 
     var loc = window.location.href 
     if (loc.indexOf("#") != -1 && loc.indexOf("#!") == -1){ 
      window.location.href = loc.replace("#", "#!"); 
     } 
    </script> 

Spero che sia d'aiuto.

+0

Questa è una possibile soluzione, grazie per la risposta. P.S, potresti voler applicare la direttiva ngCloak al titolo della tua pagina web, in questo modo i browser la indicheranno in modo più accurato e il pubblico non vedrà page.title() per un'istanza lì. –

0

Stai collegando al valore #? cioè - <a href="#/my/page"> Se è così, non dovresti esserlo. Dovresti collegarti all'URL senza il prefisso # e credo che risolverà il tuo problema.