Per quanto ne so, in Durandal 2.0 non si è in grado di farlo. I plug-in router
enon supportano questo e non sarebbe una soluzione facile poiché ci sono alcuni punti nel codice che si basano sullo #
.
Tuttavia, non penso che questo sia un problema nel vostro scenario. Forse hai bisogno di cambiare il modo di affrontare la necessità di rendere la tua applicazione eseguibile.
Si può ancora fare il vostro SEO applicazione compatibile utilizzando #
specificando il tipo di frammento meta nella principale HTML dell'applicazione:
<meta name="fragment" content="!">
Così si sta dicendo google che il vostro link non hanno la #!
ma che l'applicazione utilizza il rendering JavaScript. Quindi le richieste dal crawler includeranno ?_escaped_fragment_
.
Così nella vostra applicazione, utilizzare:
mysite.com/#myroute
e il crawler richiedere:
mysite.com?_escaped_fragment_=myroute
controllare la sezione 3 di Google di documentation on crawling per sapere di più sul tag frammento meta.
SUGGERIMENTO
Se si vuole sfruttare appieno questa caratteristica Io suggerisco di usare pushState in Durandal 2.0 attivando il router in questo modo:
router.activate({ pushState: true });
E anche incluso il tag frammento meta.
<meta name="fragment" content="!">
Cose che si dovrebbe prendere in considerazione se si utilizza pushState:
Utilizzare pushState solo se non si ha intenzione di sostenere vecchi browser.
È necessario per rendere il vostro pushState lato server pronto, questo significa che quando il server è richiesto con mysite.com/myroute
dovrebbe essere in grado di restituire la stessa applicazione JS e lasciare che il processo client i parametri di stringa di query. Ad esempio, questo può essere ottenuto utilizzando la riscrittura URL IIS se si utilizza ASP.NET. C'è un buon blog post su questo argomento.
Eccellente risposta chiaramente scritta. Grazie, questo mi sarà di grande aiuto. – ccorrin
Ho una domanda veloce, penso che abbia funzionato ora ma quando invio il mio sito a google e fornisco link a google devo dargli il http://mysite.com/#! o semplicemente http://mysite.com e Google aggiungerà in _escaped_fragment_ perché lo ho nel meta tag? – ccorrin
Direi solo mysite.com .. – margabit