2017-04-22 5 views
0

Ich entwickle gerade eine Website mit Node.js. Ich habe nur meine 404-Seite eingerichtet, und es funktioniert gut, wenn ich etwas wie mywebsite.com/404 oder eine andere Seite, die nicht existiert, aber wenn ich versuche, Zugriff auf etwas wie mywebsite.com/foo/bar, die auch nicht existiert, die Vermögenswerte wie CSS und JS nicht laden. Auf dem Server, ich bin mit:Node.js statische Ordner-Referenz wird nicht geladen CSS

app.use('/assets', express.static(__dirname + '/public')); 

Und auf der Seite selbst:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet"> 

Ich weiß, dass auf der HTML ein ../ vor dem Vermögen Zugabe wird funktionieren, aber das ist nicht Ideal. Irgendeine Hilfe?

Meine Ordnerstruktur ist etwas wie folgt:

Project Folder 
|-App.js 
|-views 
    |-404.ejs 
    |-home.ejs 
|-public 
    |-CSS 
    |-Bootstrap.min.css 
    |-js 
    |-img 
    |-font 
+0

könnten Sie uns bitte die Struktur Ihrer Ordner zeigen? Dort befindet sich die Seite, die Sie anzeigen möchten? – Teocci

+0

Da die URL mit einem '/' beginnt, sollten Sie das von Ihnen beschriebene Verhalten nicht erhalten. – Quentin

+0

Aktualisierte den Post, um die Dateistruktur zu enthalten. Als Anmerkung habe ich mir das CSS in der 404 Seite angeschaut und es fragt '/ was auch immer/das/link/ist/assets/css/boorrap.min.css' –

Antwort

0

Verwenden base Element auf Seite 404 (oder jede Seite!) Und es wird immer fordern Sie Ihr Vermögen mit dem Basispfad Sie angegeben haben.

Zum Beispiel das Hinzufügen <base href="http://example.com" /> vor Ihrem </head> Tag alle Vermögenswerte mit http://example.com als Pfad anfordern, so in Ihrem Fall statt /foo/bar/assets/css/bootstrap.min.css, wird es /assets/css/bootstrap.min.css anfordern.

+2

Das Basiselement ist zum Auflösen relativer URLs, aber a Die URL, die mit einem Schrägstrich beginnt, ist nicht relativ, sie ist absolut. Das OP-Problem muss etwas anderes sein. Außerdem sollte das Basiselement _inside_ dem Kopfelement hinzugefügt werden, nicht _before_. –

+0

@PatrickHund Ich würde es versuchen und ja, es sollte in den Kopf (es war ein Tippfehler) sein. –

+0

@zGeek Während dies das Problem behoben hat, möchte ich das zugrunde liegende Problem hier diagnostizieren, weil ich glaube, dass hier etwas anderes los ist. –

Verwandte Themen