# 静态文件服务器使用说明 本项目包含自定义的静态文件服务器,支持Next.js静态导出和自定义404页面。 ## 🚀 快速开始 ### 1. 构建静态文件 ```bash npm run build:static ``` ### 2. 启动静态服务器 ```bash npm run preview ``` ### 3. 访问网站 打开浏览器访问:http://localhost:8080 ## 📋 可用命令 | 命令 | 说明 | |------|------| | `npm run preview` | 使用自定义服务器(推荐) | | `npm run preview:simple` | 使用Python简单服务器 | | `node scripts/serve-static.js [端口]` | 直接运行Node.js服务器 | ## ✨ 功能特性 ### 🎯 自定义404页面 - 智能语言检测 - 美观的错误页面设计 - 文章缺失特殊提示 - 快捷导航链接 ### 🛡️ 安全特性 - 防止目录遍历攻击 - 安全HTTP头设置 - 适当的缓存控制 ### 📱 路由处理 - 支持Next.js静态路由 - 自动index.html查找 - HTML扩展名自动补全 ## 🔧 配置选项 ### 端口配置 ```bash # 使用8080端口(默认) npm run preview # 使用自定义端口 node scripts/serve-static.js 3000 # 指定服务目录 node scripts/serve-static.js 8080 ./build ``` ### 环境变量 无特殊环境变量要求,开箱即用。 ## 🐛 故障排除 ### 问题:端口已被占用 ``` ❌ 错误: 端口 8080 已被占用 ``` **解决方案:** ```bash # 使用其他端口 node scripts/serve-static.js 8081 ``` ### 问题:out目录不存在 ``` ❌ 错误: 目录 'out' 不存在 ``` **解决方案:** ```bash # 先构建静态文件 npm run build:static ``` ### 问题:404页面不显示 确保以下文件存在: - `out/404.html` (优先) - `public/404.html` (备用) ## 📁 目录结构 ``` project/ ├── out/ # 静态构建输出 │ ├── index.html # 首页 │ ├── 404.html # 自定义404页面 │ ├── zh-CN/ # 简体中文页面 │ ├── zh-TW/ # 繁体中文页面 │ └── en/ # 英文页面 ├── scripts/ │ ├── serve-static.js # Node.js静态服务器 │ └── serve-static.py # Python静态服务器(备用) └── public/ └── 404.html # 备用404页面 ``` ## 🌐 部署到生产环境 ### Nginx配置示例 ```nginx server { listen 80; server_name your-domain.com; root /path/to/out; index index.html; # 处理Next.js路由 location / { try_files $uri $uri.html $uri/ /404.html; } # 自定义404页面 error_page 404 /404.html; # 静态资源缓存 location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; } } ``` ### Apache .htaccess配置 ```apache RewriteEngine On # 处理Next.js路由 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /$1.html [L] # 如果HTML文件也不存在,返回404 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /404.html [L] # 自定义错误页面 ErrorDocument 404 /404.html # 静态资源缓存 ExpiresActive On ExpiresDefault "access plus 1 year" ``` ## 📞 技术支持 如果遇到问题,请检查: 1. Node.js版本 >= 14 2. 静态文件已正确构建 3. 端口未被占用 4. 防火墙设置 --- **注意:** 生产环境建议使用专业的Web服务器(如Nginx、Apache)而不是Node.js静态服务器。