.htaccess配置ErrorDocument 404后带参URL返回404被谷歌收录如何解决
原因分析
该问题通常是.htaccess中的重写规则存在逻辑错误导致的:默认的ErrorDocument 404 /404.php配置仅会在请求资源不存在时触发404页面,如果你访问存在的页面带参数时也返回404,说明你额外添加的Rewrite规则错误地把带查询参数的请求判定为不存在的资源。
解决方案
1. 修正.htaccess规则
首先清理冗余的错误拦截规则,仅保留基础404配置,再添加资源存在判断规则,允许真实存在的文件、目录正常解析查询参数:
RewriteEngine On # 真实存在的文件/目录直接放行,不触发后续重写规则 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 仅在请求资源不存在时走后续规则/触发404 ErrorDocument 404 /404.php
如果你的业务场景中不需要任何非预定的查询参数,可以新增301重定向规则,将带多余参数的请求跳转到无参数的标准地址,避免搜索引擎重复收录:
# 首页带任意参数时301跳转到无参数首页,末尾?用于清空参数 RewriteCond %{QUERY_STRING} . RewriteRule ^$ /? [R=301,L] # 其他动态页面(如abc.php)带多余参数时的重定向规则可参考此格式新增 RewriteCond %{QUERY_STRING} . RewriteRule ^abc.php$ /abc.php? [R=301,L]
2. 清理谷歌已收录的异常链接
- 给所有正常页面的head标签中添加规范链接标签(canonical),指定页面的标准访问地址,示例如下:
谷歌爬虫识别到该标签后,会自动将带多余参数的异常URL的权重归集到标准地址上,逐步清理错误收录。<!-- 首页的规范标签 --> <link rel="canonical" href="https://mywebsite.in/" /> <!-- abc.php页面的规范标签 --> <link rel="canonical" href="https://mywebsite.in/abc.php" /> - 提交最新的XML站点地图到谷歌搜索控制台,针对已收录的异常404链接可提交移除申请,加快清理进度。
3. 生效验证
配置完成后分别访问带参数的正常页面,确认页面返回200状态码,不再触发404;异常参数的重定向规则返回301状态码即可。
内容的提问来源于stack exchange,提问作者Dip Desai
相关产品推荐
相关产品推荐

