伪静态规则错误导致SEO收录差,主因是Nginx try_files配置不当使爬虫访问伪静态URL返回404/302;需正确配置try_files $uri $uri/ /index.php?$query_string,保留$query_string,避免rewrite旧写法,并同步清理CDN、OPcache等多层缓存,更新sitemap.xml和robots.txt。
伪静态规则写错,Nginx 里 try_files 配置不当最常见
线上 SEO 站收录差,很大概率是搜索引擎爬虫访问 /article/123 这类 URL 时返回了 404 或 302 跳转,根本没走到 PHP 路由逻辑。Nginx 中最典型的错误是 try_files $uri $uri/ /index.php?$query_string; 缺少 $is_args$args 或误写成 /index.php?/$1 这类硬编码路径。
正确做法是确保所有非静态资源都交由 index.php 统一入口处理:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
注意点:
-
$query_string必须保留,否则 GET 参数(如?page=2&sort=desc)会丢失 - 不要用
rewrite ^/(.*)$ /index.php?_url=/$1 last;这种旧式写法,易造成重定向循环 - 如果用了 Laravel、ThinkPHP 等框架,确认其官方推荐的 Nginx 规则是否被手动改过
PHP 框架路由未适配伪静态,$_SERVER['REQUEST_URI'] 被污染
有些伪静态配置把路径塞进 QUERY_STRING(比如 /index.php/article/123),但 PHP 没读取原始请求路径,而是依赖 $_SERVER['PATH_INFO'] 或错误解析 $_SERVER['QUERY_STRING'],导致路由匹配失败、页面 404。
立即学习“PHP免费学习笔记(深入)”;
检查方法:在入口文件加一行调试
file_put_contents('/tmp/request.log', print_r($_SERVER, true), FILE_APPEND);
重点看这几个字段是否合理: