You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js静态导出部署子目录后非首页刷新跳转错误问题求解

问题根因

你当前使用的.htaccess规则默认将所有非静态资源请求转发到站点根目录的index.html,没有匹配你部署的子目录路径,导致刷新时直接定位到根站点入口,没有进入你的Next.js应用路由逻辑。

解决方案

1. 替换/subdirectory目录下的.htaccess配置

该配置文件需要放在你服务器站点根目录下的subdirectory文件夹内,不要放在站点根目录:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # 重写基路径修改为你的子目录路径
  RewriteBase /subdirectory/
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # 重写目标修改为子目录下的index.html,移除末尾多余斜杠
  RewriteRule . /subdirectory/index.html [L]
</IfModule>

2. 修正next.config.js配置

补充trailingSlash配置保证静态导出路径和Apache路由匹配:

/** @type {import('next').NextConfig} */
const nextConfig = {
  basePath: '/subdirectory',
  // 静态导出场景必须开启,保证页面路径对应生成的静态html文件路径
  trailingSlash: true,
  // Next.js 12.3+版本可以直接加这个配置,无需在构建命令加export参数
  output: 'export'
}

module.exports = nextConfig

3. 验证生效

修改完成后清理浏览器缓存,使用无痕模式访问子页面刷新测试即可。如果规则不生效,确认Apache服务器已经开启mod_rewrite模块。

内容的提问来源于stack exchange,提问作者honzanemecek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:27:04