Angular网站申请Google Adsense遇ads.txt未找到及304状态问题求助
问题原因及解决办法
核心原因
1. Angular构建未将ads.txt纳入输出目录
Angular默认仅处理src/assets目录下的静态资源,以及项目源码文件(ts、html、css等)。直接放在src根目录的ads.txt不会被自动复制到构建生成的dist目录,导致部署后服务器上根本不存在这个文件,Google AdSense爬虫自然无法找到。
2. 304状态码的本质
304不是“文件未找到”,而是资源未修改的缓存状态。这说明你之前请求/ads.txt时返回了404(文件不存在),浏览器缓存了这个404结果;再次请求时,浏览器直接返回缓存的304状态,显示的依然是之前的404页面,本质还是服务器上没有目标文件。
解决步骤
方法一:通过assets目录配置(推荐)
- 将
ads.txt移动到src/assets/目录下。 - 打开
angular.json,确认projects -> [你的项目名] -> architect -> build -> options -> assets数组包含src/assets(默认已配置):"assets": [ "src/favicon.ico", "src/assets" ] - 构建项目后,
ads.txt会出现在dist/[你的项目名]/assets/目录下。 - 配置服务器,将域名根路径的
/ads.txt映射到该文件。比如Nginx可添加如下配置:location = /ads.txt { root /path/to/your/dist/project/assets; }
方法二:直接输出到构建根目录
- 在
angular.json的assets数组中新增一项配置,让Angular把src根目录的ads.txt直接复制到dist根目录:"assets": [ "src/favicon.ico", "src/assets", { "glob": "ads.txt", "input": "src/", "output": "/" } ] - 重新构建项目,此时
dist根目录会直接出现ads.txt,部署后即可通过https://你的域名/ads.txt访问。
验证方法
- 执行
ng build --prod构建项目,检查dist目录下是否存在正确路径的ads.txt。 - 使用浏览器匿名窗口访问
https://你的域名/ads.txt,确认能正常打开文件内容(避免缓存干扰)。 - 回到Google AdSense平台,重新触发审核验证。
内容的提问来源于stack exchange,提问作者Vaibhaav Sharrma
相关产品推荐
相关产品推荐

