0

我正在制作一个在 node express 网络服务器上运行的网络应用程序。我目前设置的路线是这样的:

app.all('*', function(req, res){
    var url = req.originalUrl;

    if(url == '/'){
        res.render('index.html');
    } else {
        console.log("**USING * HANDLER");
        var string = url.substr(1, url.length);
        res.render(string);
    }

});

我以这种方式设置它,因为它一次处理至少 15 个index.html文件中的链接。

现在在这之下,我还有:

app.get('/proxy*', function (req, res) {
    console.log('**USING /proxy HANDLER');
    //return proxy.proxyRequest(req, res, proxyOptions);
});

那是因为我的服务器发出了一些请求,例如:

GET /proxy.php?url=http%3A%2F%2Fa.tile.cloudmade.com%2FBC9A493B41014CAABB98F0471D759707%2F997%2F256%2F0%2F0%2F0.png

我需要单独处理这些请求。问题是似乎很多东西都没有任何打印就可以通过。以下是一些GETS的列表:

**USING * HANDLER
GET / 304 8ms
**USING * HANDLER
GET /leaflet.html 304 5ms
GET /leaflet/dist/leaflet.js 304 1ms
GET /js/jquery/jquery-1.4.2.js 304 1ms
GET /js/osgjs/osg-debug-0.0.7.js 304 2ms
GET /js/osgjs/osg-extras.js 304 3ms
GET /js/osgearth/FunctionLocation.js 304 3ms
GET /js/osgearth/osgearth.js 304 4ms
GET /js/osgearth/ShaderFactory.js 304 2ms
GET /js/osgearth/VirtualProgram.js 304 1ms
GET /js/osgearth/Extent.js 304 2ms
GET /js/osgearth/EllipsoidModel.js 304 1ms
GET /js/osgearth/Profile.js 304 2ms
GET /js/osgearth/GeodeticProfile.js 304 2ms
GET /js/osgearth/MercatorProfile.js 304 3ms
GET /js/osgearth/TileKey.js 304 3ms
GET /js/osgearth/ImageLayer.js 304 2ms
GET /js/osgearth/HeightField.js 304 2ms
GET /js/osgearth/ElevationLayer.js 304 3ms

就是这样。USING * HANDLER它为我自己手动制作的GETS打印。因此,当我转到服务器 URL/时,然后单击链接leaflet.html 后,服务器生成的所有GETS 都成功返回,但它从不打印。它也从不打印代理路由。是什么赋予了?我该如何解决这个问题?

4

1 回答 1

0

快速回顾一下这是如何解决的;

事实证明,express.static在调用任何路由之前,它被配置为优先服务文件系统中存在的文件。

从文件系统中删除不提供服务的静态文件(在这种情况下为proxy.php)允许按预期调用路由处理程序,而不是静态提供proxy.php的内容

于 2013-07-24T13:47:57.667 回答