Expo 49 Web项目添加robots.txt路由的实现方案咨询
解决Expo 49 Web端添加robots.txt的两种方法
方法一:利用静态资源目录(推荐)
Expo的Web静态构建流程会自动将项目根目录下public文件夹中的文件复制到构建产物的根目录,直接创建静态文件即可满足需求:
- 在项目根目录新建
public文件夹(若尚未存在) - 在
public目录内创建robots.txt文件,写入你的爬虫规则,示例:User-agent: * Disallow: /admin/ Allow: / - 执行
npx expo export:web构建Web版本,完成后访问/robots.txt即可看到对应内容。
方法二:通过Catch-All路由动态处理
如果需要根据环境或其他条件动态生成robots.txt内容,可以用Catch-All路由匹配路径:
- 在
/app目录下创建[...catchAll].tsx文件 - 编写路由逻辑判断路径并返回对应内容,示例:
import { usePathname } from 'expo-router'; import { Text } from 'react-native'; export default function CatchAllRoute() { const pathname = usePathname(); if (pathname === '/robots.txt') { // 根据环境动态生成规则 const robotsContent = process.env.NODE_ENV === 'production' ? `User-agent: *
Disallow: /admin/
Allow: / :User-agent: *
Disallow: /`;
return <Text>{robotsContent}</Text>; } // 其他未匹配路径返回404或重定向到首页 return <Text>404 Not Found</Text>;
}
3. 注意:若使用静态导出模式,需确保该路径被预渲染;若采用服务器端渲染则无需额外配置。 内容的提问来源于stack exchange,提问作者alyx
相关产品推荐
相关产品推荐

