如何在共享主机上通过express使用静态文件夹

时间:2016-07-16 11:49:08

标签: javascript node.js express

我正在尝试在简单的Node.js + Express应用程序中使用静态文件夹,但总是会出现404错误。

我通过express project_name创建了一个基本结构,其中包含以下文件夹结构(我将其缩减为必要部分):

app.js
/views
 \-- layout.pug
/public
 \-- /stylesheets
      \-- style.css

app.js是由Express创建的,它看起来像这样(也减少了):



var express = require('express');
var path = require('path');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

app.use(express.static(path.join(__dirname, 'public')));

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use('/', routes);
app.use('/users', users);

module.exports = app;




我在style.css中引用了样式表layout.pug,就像这样

link(rel='stylesheet', href='stylesheets/style.css')

我可能想补充一点,即我在共享主机(Uberspace)上托管我的应用程序。这意味着我的项目位于我用户的主目录中,该应用程序作为服务运行(守护进程)我将.htaccess从我的用户html/project_name-folder重定向到http://localhost:port(Node.js-application)。

当我运行该应用程序时,我总是在http://domain.tld/project_name/stylesheets/style.css

上收到404错误

修改

这是我的.htaccess(我用' port'替换了实际的端口号):

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteRule (.*) http://localhost:port/$1 [P]

1 个答案:

答案 0 :(得分:0)

你试过了吗? app.use('/' + project_name, express.static(path.join(__dirname, project_name)));