2016-08-06 72 views
1

Ich habe eine Express-App, die nur die Standard-leere App ist. Ich habe hinzugefügt, dann die Zeile:Statische Inhalte Subdomain mit Express?

app.use(serveStatic('docs/public', {'index': ['index.html', 'index.htm']})) 

den Inhalt meines docs/public Verzeichnis zu dienen. Das funktioniert großartig, aber es wird dem Stamm meiner Anwendung bereitgestellt, sodass ich die Standard-Express-Indexseite nicht mehr sehen kann.

Ich würde gerne die statische HTML (die ich derzeit als mein Index sehe) als Sub-Domain, z. blog.mydomain.com. Oder zumindest als mydomain.com/blog. Wie kann ich den statischen Inhalt einer Subdomain bereitstellen?

NB: Die statischen Dateinamen und Ordner können nicht geändert werden, da mein ./docs-Verzeichnis ein Hexoprojekt ist und alle Änderungen die Generierung des statischen Inhalts im Ordner "docs/public" unterbrechen würden.

Ich habe versucht, express-subdomain zu verwenden, so habe ich Code wie folgt zu meinem app.js:

var router = express.Router(); 
router.use(serveStatic('docs/public', {'index': ['index.html', 'index.htm']})) 

app.use(subdomain('docs', router)); 

jedoch Wenn ich laufen, dass ich die Express-Indexseite an http://localhost:3000/ (nicht die statische) erhalten was ich will, aber wenn ich zu http://docs.localhost:3000/ gehe, dann bekomme ich meinen statischen Inhalt, immer noch den ursprünglichen Express-Index. In der Tat, wenn ich den Sub-Domain-Code entfernen und die App ausführen, navigieren Sie zu der Docs-Subdomain Ich bekomme immer noch das gleiche Ergebnis.

I haben auch versucht, die Subdomäne Modul zu verwenden:

app.use(subdomain('docs', serveStatic('docs/public', {'index': ['index.html', 'index.htm']}))); 

jedoch, dass das gleiche Ergebnis wie oben (keine statische Inhalte dient) aufweist.

Wie kann ich den statischen Inhalt, den ich derzeit auf einer Subdomain erhalte, bedienen?

+0

Haben Sie sich [express-subdomain] (https://www.npmjs.com/package/express-subdomain) angeschaut? –

+0

@OmarDarwish ja, aber ich konnte nicht herausfinden, wie man es benutzt. Siehe mein Fragenupdate. –

Antwort

1

@GeorgeEdwards In Ihrem Beispielcode haben Sie die statische Middleware vor der Subdomain-Middleware aufgerufen. Die Reihenfolge ist wichtig ... sollte es so etwas wie diese:

app.use(subdomain('docs', express.static('docs/public'))); 

Das bedeutet, alle Anfragen mit der docs Sub-Domain wird durch die ausdrückliche statische Middleware behandelt werden.

+0

Ich habe Angst mit dieser Zeile, bekomme ich immer noch das gleiche Ergebnis (docs.localhost: 3000 Routen auf die gleiche Seite wie localhost: 3000 - nicht meine statische Inhalt) hier ist ein [gist] (https: //gist.github. com/georgeedwards/71371bc7004aaac850c00c384cbea2f7) meiner 'app.js' Datei –