.htaccess将不会加载主页 - 使用Linux服务器

时间:2018-06-18 21:47:10

标签: node.js apache .htaccess

我在Linux共享托管服务器上使用Node.js.我创建了一个.htaccess文件,以便将访问者重定向到Node应用程序,然后将其存储在user/public_html目录中。当我访问网站时,主页视图返回404错误,但布局和所有其他视图正确加载。我将Node应用程序存储在user/apps/目录中。我的.htaccess文件如下:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:49923/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:49923/$1 [P,L]

My Node server.js文件如下所示:

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var app = express();
var fs = require('fs');
var nodemailer = require('nodemailer');
var dotenv = require('dotenv');
var validator = require('express-validator');
var hbs = require('express-handlebars');
var handlebars = hbs.create({
    extname: '.handlebars',
    layoutsDir: path.join(__dirname, 'views/layouts'),
    defaultLayout: 'main',
    partialsDir: path.join(__dirname, 'views/partials')
});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('views', path.join(__dirname, 'views'));

const http = require('http');
const server = http.createServer();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));
app.use(validator());

var express = require('express');
var path = require('path');
var body_parser = require('body-parser');
dotenv.load();

var smtpTransport = nodemailer.createTransport({      
    host: "smtp.gmail.com",
    auth: {
        type: "OAuth2",
        user: process.env.GMAIL_USER,
        clientId: process.env.GOOGLE_CLIENT_ID,
        clientSecret: process.env.GOOGLE_CLIENT_SECTRET,
        refreshToken: process.env.REFRESH_TOKEN                              
    },
    tls: {
        rejectUnauthorized: false
    }
});

// GET Homepage
app.get('/', function(req, res, next){
    res.render('home');
});
// GET About Page
app.get('/about', function(req, res, next){
    res.render('about', {
        page_id: "about"
    });
});
// GET Contact Page
app.get('/contact', function(req, res, next){
    res.render('contact', {
        page_id: "contact"
    });
});

// Server Error
app.use(function(req,res){
    res.status(404);
    res.render('404');
});
// Program Error
app.use(function(err, req, res, next){
    console.error(err.stack);
    res.status(500);
    res.render('500');
});

app.set('port', process.env.PORT || port);
app.listen(app.get('port'), function () {
    console.log('Express started on http://localhost:' + app.get('port') + '; press Ctrl-C to terminate.');
});

我尝试了.htaccess文件的不同配置而没有运气。当我将变量从后端传递到客户端时,它们似乎没有显示在主页上。我在访问主页时更改了正在加载的视图,并且出现了同样的问题,因此任何视图上的实际代码似乎都没有问题。我检查并更新了Node,NPM和模块的版本;应用程序仍在本地运行,没有任何问题。我尝试使用备用端口,这似乎没有任何区别。看起来主页加载时没有选择'/' GET请求。而服务器正在检索我的404 Page。在本地使用时,网站运行良好,这就是为什么我认为它必须是.htaccess文件的问题。

提前感谢您,任何建议都会有所帮助!如果.htaccess文件出现问题,请解释任何更改。我肯定看到其他帖子引用了在Apache服务器上运行的Node.js,但我已经遵循了相关的建议。我还没有找到解决这个问题的方法。如果您想发布我最有可能已经看过的一些帖子的链接,请说明您认为哪个部分或响应可以解决此问题。

0 个答案:

没有答案