diff --git a/Dockerfile b/Dockerfile index a95d0af6..e09a0481 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,4 +11,6 @@ RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ && rm -rf /var/lib/apt/lists/* COPY ./nginx/default.conf /etc/nginx/conf.d/docs.conf -COPY ./nginx/zh-only-redirects.conf /etc/nginx/conf.d/zh-only-redirects.conf +# rewrite 只能在 server 上下文使用,故不放 conf.d/(那里会被 include 进 http 块), +# 而是由 default.conf 的 server 块 include 本文件 +COPY ./nginx/zh-only-redirects.conf /etc/nginx/zh-only-redirects.conf diff --git a/nginx/default.conf b/nginx/default.conf index d1afec83..85f38d23 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -2,6 +2,9 @@ server { listen 4000; server_name localhost; + # 仅中文页面的旧根路径 URL -> /zh/ 新路径(由 scripts/gen-rewrites.mjs 生成) + include /etc/nginx/zh-only-redirects.conf; + location / { index index.html index.htm; diff --git a/nginx/zh-only-redirects.conf b/nginx/zh-only-redirects.conf index 646db29f..750785ef 100644 --- a/nginx/zh-only-redirects.conf +++ b/nginx/zh-only-redirects.conf @@ -1,4 +1,6 @@ # 本文件由 scripts/gen-rewrites.mjs 生成,勿手改。 # 仅中文版本(暂无英文翻译)的页面:旧根路径 URL -> /zh/ 新路径。 +# 注意:rewrite 不能出现在 http 上下文,本文件须由 server 块 include +# (见 nginx/default.conf 与 Dockerfile),不能放进 /etc/nginx/conf.d/。 rewrite ^/docs/release-notes/release-7.2-ee/?$ /docs/zh/release-notes/release-7.2-ee? permanent; rewrite ^/docs/release-notes/release-7.2-ee\.html$ /docs/zh/release-notes/release-7.2-ee? permanent; diff --git a/scripts/gen-rewrites.mjs b/scripts/gen-rewrites.mjs index cac37117..dd847ebd 100644 --- a/scripts/gen-rewrites.mjs +++ b/scripts/gen-rewrites.mjs @@ -131,6 +131,8 @@ const zhOnly = baseline.filter((b) => b.liveAt === 'redirect-to-zh') const conf = [ '# 本文件由 scripts/gen-rewrites.mjs 生成,勿手改。', '# 仅中文版本(暂无英文翻译)的页面:旧根路径 URL -> /zh/ 新路径。', + '# 注意:rewrite 不能出现在 http 上下文,本文件须由 server 块 include', + '# (见 nginx/default.conf 与 Dockerfile),不能放进 /etc/nginx/conf.d/。', ...zhOnly.map( ({ url }) => `rewrite ^/docs/${url}/?$ /docs/zh/${url}? permanent;\nrewrite ^/docs/${url}\\.html$ /docs/zh/${url}? permanent;`