表示不在公共子目录中提供静态文件



我在尝试使用 Express 和 Apache 在公共子目录中提供静态文件时遇到了几个问题。 我的工作路径如下:

  • 公共
    • .css
      • 风格.css
  • 应用.js

应用程序.js文件:

var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/public'));

如果 style.css 在公用文件夹中,一切都很好。如果我将其移动到css目录中(更改相对html标签(,这就是我得到的错误:

https://example.com/css/style.css 404 not found

这是 html 文件中的链接

<link rel="stylesheet" href="css/style.css" type="text/css">

这是我的阿帕奇服务器配置:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /*>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</Location>
<Directory "/var/www/">
AllowOverride None
Options -Indexes +FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
</IfModule>

可能是代理问题吗?

正如我所料,这是一个Apache配置问题。一旦我编辑如下所示的配置文件,公共目录及其子目录"css"就被正确识别。

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
<Directory "/var/www/">
AllowOverride None
Options -Indexes +FollowSymLinks
Require all granted
</Directory>
</VirtualHost>

最新更新