我的网站部署在 vercel 上,该网站是直接部署在 vercel 上的 Next js 应用程序(不使用 nginx 或任何其他 Web 服务服务器)。有两个域分配给同一个网站。一个是子域 (testers.example.com),另一个是主站点 (www.example.com)。这两个都使用相同的代码库(这是必需的),因此两个域的 robots.txt 是相同的。但我不想启用对 testers.example.com 的爬网,使其在 www.example.com 上保持活动状态。我该如何执行此操作?
我尝试过:
Disallow: tester.example.com
但这并没有成功,因为在允许和禁止属性中使用了相对地址
我也遇到了同样的问题,我可以通过这样做解决它。
步骤1
首先我创建了一个环境变量
NEXT_PUBLIC_LiveBaseUrl
并将其值设置为http://localhost:3000
。
现在我的项目托管在铁路上,而不是 vercel,但我相信它也应该工作相同。
第2步
在测试器子域部署设置上,我将 env
NEXT_PUBLIC_LiveBaseUrl
设置为 tester.example.com
,在 www 子域部署设置上,我将 env NEXT_PUBLIC_LiveBaseUrl
值设置为 www.example.com
。
第3步
我创建了一个 robots.ts 文件并添加了此代码
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
const isTesterUrl = process.env.NEXT_PUBLIC_LiveBaseUrl?.includes("tester");
return {
rules: {
userAgent: '*',
allow: isTesterUrl ? undefined : '/',
disallow: isTesterUrl ? '/' : undefined,
},
sitemap: `${process.env.NEXT_PUBLIC_LiveBaseUrl}/sitemap.xml`,
}
}
由于在vercel中构建项目时会生成robot.ts文件,因此每个域都会生成不同的robot文件。
我希望这对其他人有帮助