将节点 js 网站托管到 Azure。默认路径/不工作

时间:2021-02-10 09:10:49

标签: node.js azure visual-studio-code

我有一个 node js 网站,我正在使用 Visual Studio 代码将其部署到 azure 服务器。以下是我在 server.js 上的代码

var express =require('express');
var bodyParser=require("body-parser")
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var nodemailer = require("nodemailer");
var port=process.env.PORT || 3000;

app.use(express.static(__dirname + '/public'));


app.get('/',function(req,res){

console.log('hello from server');

 res.render('./public/index.html');

  });

我将该网站部署到一个 azure 应用服务,并且该 url 总是希望将 index.html 添加到它以工作。例如 https://abc.azurewebsites.net 不起作用,但 https://abc.azurewebsites.net/index.html 起作用。如何从 url 中删除 index.html?

我的 azure 文件夹结构是 site/wwwroot/public/all html 文件。

任何人都可以提出解决方案

1 个答案:

答案 0 :(得分:0)

更新:

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <webSocket enabled="false" />
    
    <rewrite>
      <rules>
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
          </conditions>
          <action type="Rewrite" url="public/index.html"/>
        </rule>
      </rules>
    </rewrite>
    
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin"/>
        </hiddenSegments>
      </requestFiltering>
    </security>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

原答案:

只需在根目录('/site/wwwroot')中添加一个名为.htaccess的文件,文件内容如下:

DirectoryIndex public/index.html

之后,您的网络应用程序的默认值将更改为“public/index.html”。