2016-07-19 145 views
7

Quando clicco su questo: <a href="#/home">home</a> l'url è localhost/Sites/App/#!/#%2Fhomeforza angolare un punto esclamativo indesiderato url

Quando clicco su questo: <a href="#!/home">home</a> l'url è localhost/Sites/App/#!/home

Ma questo funziona solo sul mio computer, per i miei colleghi è l'opposto, i collegamenti non funzionano se ci sono ! nell'URL.

Comprendo le best practice SEO ma non disponiamo di un sito Web pubblico, è necessario disporre di un sito Web che funzioni senza punto esclamativo nell'URL.

Capisco che l'/ nell'URL sia codificato perché l'angolare pensa che questo non sia un separatore di percorso ma perché nel mio unico computer? Abbiamo lo stesso codice.

Utilizziamo IIS o IIS Express, Chrome o IE, non ci sono differenze. Quando funziona per me, non funziona per tutti gli altri.

Nelle chiamate alle reti del browser possiamo vedere che non ci sono chiamate server tra il clic sul collegamento e la generazione di URL non validi.

Questa è la configurazione del modulo:

angular.module('paper.app', [ 'ngMaterial' 
         , 'ngMessages' 
         , 'ngRoute' 
         , ...]) 
    .config(function ($routeProvider, $mdThemingProvider, $mdIconProvider, $locationProvider, $mdDateLocaleProvider, contentUrl, contentSvg) { 

     $routeProvider 
      .when("/", { 
       templateUrl: contentUrl + 'view-home/html/home.html', 
       controller: 'HomeController', 
       controllerAs: 'homeCtrl' 
      }) 
      .otherwise({ 
       redirectTo: '/' 
      }); 

     $locationProvider.html5Mode(false); 

     ... 
    }); 

Questa è la bower.json:

{ 
    "name": "...", 
    "version": "1.0.0", 
    "authors": [ 
     "..." 
    ], 
    "ignore": [ 
     "node_modules", 
     "bower_components" 
    ], 
    "description": "", 
    "main": "", 
    "homepage": "", 
    "dependencies": { 
     "angular": "^1.5.7", 
     "angular-material": "^1.0.9", 
     "angular-route": "^1.5.7", 
     "angular-material-data-table": "^0.10.9", 
     "moment": "^2.14.1" 
     } 
} 
+0

Avete impostato in base URL? –

+0

Sì: 'localhost/Sites/App /' nel 'meta' della mia pagina. –

+0

Ho lo stesso problema, hai mai trovato una soluzione per questo? Ho posto una domanda qui http://stackoverflow.com/questions/41211755/i-have-weird-in-angularjs-route-and-all-other-routes-dont-work –

risposta

3

// configurazione lato client per abbastanza url // Rimuovere # da url

$locationProvider.html5Mode(true); 

e aggiungi questo al tuo index.html <base href="/"></base>

+0

Non voglio attivare html5Mode, ho bisogno di mantenere il '#' –

27

ho risolto aggiungendo questo:

$locationProvider.hashPrefix(''); 
Problemi correlati