2015-07-10 75 views
0

我試圖阻止我網站中的某些文件被公開訪問。例如,如果你去mysite.com/package.json而不是在瀏覽器中顯示它,我只想發送和錯誤或重定向回我的主頁或其他東西。我覺得這應該很容易......但我一直無法獲得任何工作。沒有複雜的事情有關的網站,它的運行相當簡單server.js在expressJS中阻止靜態文件訪問

var appRoot  = __dirname, 
    express  = require('express'), 
    chalk   = require('chalk'), 
    mongoose  = require('mongoose'), 
    bodyParser  = require('body-parser'), 
    methodOverride = require('method-override'), 
    path   = require('path'), 
    errorhandler = require('errorhandler'), 
    os    = require('os'), 
    http   = require('http'), 
    Routes; 


// ----------------------------- 
// Configuration 
// ----------------------------- 
var port, env, logs; 

// Switch some vars based on the ENV 
if(process.env.NODE_ENV === 'production'){ 
    port = 3000; 
    env = 'production'; 
} else { 
    port = 8080; 
    env = 'development'; 
} 

// Express Variables 
var app  = express(); 
var router = express.Router(); 

// Use static files in root 
app.use(express.static(__dirname)); 

// API config 
app.use(bodyParser.json()); 
app.use(methodOverride()); 
app.use(errorhandler({ dumpExceptions: true, showStack: true })); 

// Database 
mongoose.connect(mydb); 

// Routes/API Config 
Routes = require(appRoot + '/routes')(app, router, mongoose); 

// After all routes don't match ie. refreshing a page, send index.html 
app.get('/*', function(req, res) { 
    res.sendFile(__dirname + '/index-' + env + '.html'); 
}); 

app.listen(port); 

我希望做的是這樣的:

app.get('/package.json', function(){ 
res.end('Not allowed'); 
}); 

,甚至在我把它的靜態html索引檢查他們是否試圖訪問受限制的文件。任何建議,資源等歡迎。如果您需要更多的信息,只需詢問。基於

+0

爲什麼你存儲靜態文件的根,而不是一些 '公共' 目錄? –

+0

我在/ assets&in/views中有靜態文件(我的網站需要訪問)。我不需要訪問我的任何其他東西 –

回答

1

comment

,就應該替換該行:

app.use(express.static(__dirname)); 

與此:

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

ahhh很好,第一個arg就是我所需要的。沒有它(我曾嘗試過)只是造成了一大堆錯誤 –