2016-09-20 4 views
1

Dies macht mich verrückt ... Ich habe eine Route in meinem Router-Definition hinzugefügt, um eine Klartext robots.txt-Datei zu dienen. Ich glaube nicht, dass ich vor der Route /robots.txt einen Catchall habe, da die anderen Routen nach/mobile und/map wie erwartet funktionieren. Auf meinem lokalen Rechner funktioniert die Datei /robots.txt einwandfrei. Nur wenn diese Route auf dem Server bereitgestellt wird, funktioniert diese Route nicht.robots.txt nicht über node.js Routen senden senden Klartext

router.get('/', function (req, res) { 
    res.render('index'); 
}); 

router.get('/mobile', function (req, res) { 
    res.render('mobile'); 
}); 

router.get('/map', function (req, res) { 
    res.render('map'); 
}); 

router.get('/robots.txt', function (req, res) { 
    res.type('text/plain'); 
    res.send('User-agent: *'); 
}); 

Diese gut auf meinem lokalen Rechner funktioniert jedoch nicht, wenn

Error: Not Found 
    at /usr/share/geolytix/app.js:28:13 
    at Layer.handle [as handle_request] (/usr/share/geolytix/node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/usr/share/geolytix/node_modules/express/lib/router/index.js:312:13) 
    at /usr/share/geolytix/node_modules/express/lib/router/index.js:280:7 
    at Function.process_params (/usr/share/geolytix/node_modules/express/lib/router/index.js:330:12) 
    at next (/usr/share/geolytix/node_modules/express/lib/router/index.js:271:10) 
    at /usr/share/geolytix/node_modules/express/lib/router/index.js:618:15 
    at next (/usr/share/geolytix/node_modules/express/lib/router/index.js:256:14) 
    at Function.handle (/usr/share/geolytix/node_modules/express/lib/router/index.js:176:3) 
    at router (/usr/share/geolytix/node_modules/express/lib/router/index.js:46:12) 

Meine erste Vermutung war, zu http://geolytix.co.uk/robots.txt eingesetzt, dass dies etwas mit dem Proxy von nginx zu meinem Knoten-Server kann zu tun hat, zugreifen, aber ich die Website direkt an die IP-Adresse gehen. Die Route robots.txt schlägt jedoch fehl.

http://139.59.161.58:3000/robots.txt

Edit:

Dies ist Zeile 28 meiner app.js enter image description here

+0

Sind Sie sicher, dass Sie Ihren Node-Server nach dem Hinzufügen dieser Route neu gestartet haben? Versuchen Sie, '/ robots.txt' direkt von Express (auf Ihrem Server) anzufordern, anstatt über nginx zu gehen. – robertklep

+0

Ich nehme an, es ist ein statisches Dateiabhörproblem. Kannst du nginx config, speziell 'location' part in' server' anzeigen? – Nevertheless

+0

Es ist nicht die Nginx-Einstellung. Ich kann die Website von der IP-Adresse öffnen, aber die robots.txt wird nicht geöffnet. http://139.59.161.58:3000/robots.txt –

Antwort

2

Die Anwendung war nach 15 fehlgeschlagenen Neustarts in PM2 abgestürzt, wobei eine zwischengespeicherte Version noch bereitgestellt wurde. Die Route robots.txt befand sich nicht im Cache. Es tut mir leid, dass Sie Ihre Zeit verschwendet haben. Zumindest verstehe ich jetzt besser, wie man PM2 benutzt.

D

0

Dies liegt daran, nginx Konfiguration abfangen statische Dateien gesetzt fordert.

Ein Teil wie folgt aus:

http { 
    ... 
    server { 
     ... 
     location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) { 
      root /usr/local/.../public; 
      access_log off; 
      expires max; 
     } 
     ... 
    } 
} 

kümmert robots.txt auch der Umgang mit, bevor er Routing-Middleware Express.js bekommt.

Sie sollten die Datei von der nginx-Konfiguration ausschließen, um das Routing zu ermöglichen.

+0

Es ist nicht die nginx Config ich fürchte. Wenn ich direkt zur IP-Adresse gehe, kann ich die robots.txt nicht bekommen. –

+0

Auch macht keinen Sinn, weil die Fehlermeldung Express ist, so dass die Anfragen _are_ Proxy sind. – robertklep

+0

Ich denke, es ist die einzige Sache, die dieses Problem verursachen könnte - wie dieser Pfad vom Server behandelt wird. Code ist völlig in Ordnung (und es funktioniert auf localhost). Wie auch immer, du versuchst zu sagen, dass wenn du auf die Site per IP zugreifst, nginx die Anfrage nicht mehr bearbeitet? Es hängt davon ab, wie Sie es konfiguriert haben. – Nevertheless