2017-02-21 1 views
0

Ich habe ein paar von Websites in meiner s3 + Cloudfront, zum Beispiel:Open in einem neuen Tab funktioniert nicht wie mit s3 statischer Website und Cloudfront erwartet

  • www.example.com/test/#/
  • www.example.com/test1/#/

www.example.com der Haupt Eimer ist, zu testen und test1 die Ordner unten und separate Websites zu sein.

Jetzt ist das Problem, wenn ich versuche, etwas in einem neuen Tab zu öffnen, zum Beispiel das Armaturenbrett. Bei regelmäßiger Navigation wird die URL: www.example.com/test/#/dashboard und es funktioniert einwandfrei. Aber wenn eine neue Registerkarte ist, entfernt es den Test und wird: www.example.com/#/dashboard und gibt mir eine 404.

Ist dies ein Winkelkonfigurationsproblem? Oder Cloudfront und S3-Problem?

bearbeiten, unter einigen der Routen Config-Code:

$urlRouterProvider.otherwise("/"); 
$stateProvider 
    .state('home', { 
    url: '/', 
    templateUrl:'test/javascripts/templates/welcome/views/welcome.html', 
    controller: 'WelcomeController' 
    }) 
    .state('dashboard', { 
    url: '/dashboard', 
    templateUrl: 'test/javascripts/templates/dashboard/views/dashboard.html', 
    controller: 'DashboardController' 
    }) 
+0

Es scheint ein Problem im Zusammenhang mit eckigen '#' URLs. Bitte fügen Sie Ihre Routen und den Code zur Überprüfung ein. – Sravan

+0

@Sravan Hinzugefügt den relevanteren Code aus der Route-Datei ... –

Antwort

2

Der Fehler scheint mit dem #URL's

das Problem zu sein $locationProvider.html5Mode(true); hinzufügen Datei config.

app.config(["$stateProvider","$locationProvider", function($stateProvider,$locationProvider) { 

     $urlRouterProvider.otherwise("/"); 
     $stateProvider 
     .state('home', { 
      url: '/', 
      templateUrl:'test/javascripts/templates/welcome/views/welcome.html', 
      controller: 'WelcomeController' 
     }) 
     .state('dashboard', { 
      url: '/dashboard', 
      templateUrl: 'test/javascripts/templates/dashboard/views/dashboard.html', 
      controller: 'DashboardController' 
     }) 

    $locationProvider.html5Mode(true).hashPrefix('!') 
    }]); 

Jetzt sollten Sie den Browser über die Änderung sagen, so haben Sie base href im HEAD-Tag zu setzen.

<base href="/">

CHeck this link for more information

+0

Ich werde deine Antwort verbessern, weil es mir ein bisschen geholfen hat, aber ich fügte die Lösung hinzu, die ich fand, Danke trotzdem =) –

+0

@GustavoGabriel, NP, das Finale was benötigt wird, ist die Lösung zu bekommen. Froh dir zu helfen. :) – Sravan

0

@Sravan Antwort erinnerte mich an die Basis href-Tag im Index html, die ich vor langer Zeit gesetzt hatte. Ich hatte es so:

<base href="/"> 

Aber da ich mit Ordnern in s3 arbeite, denke ich, die/an der Basis meiner url hinwies und die test aus der URL zu entfernen. Also musste ich nur entfernen die/werden:

<base href=""> 
Verwandte Themen