我有一个以前只通过apache托管的网站,我们使用脚本生成动态网页。请求使用查找404错误的脚本命中子文件夹,如果请求URI在列表中,则提供动态页面。这是脚本的大规模缩减版本,但它是这样的:
if (preg_match("/\/shop-search\/(.*)-shoes$/", $_SERVER['REQUEST_URI'],
$matches)) {
header("HTTP/1.1 200 OK");
$colorName = trim(strip_tags($matches[1]));
$pagenum = 1;
$mainURL = "/shop-search/" . $colourName . "-shoes/";
$color = array(
"Blue" => "Blue",
"Red" => "Red",
);
if (isset($color[$colorName])) {
$keywords = $color[$colorName];
$pageType = "colour";
require_once "by-color.php";
exit;
}
}
在Apache下,它捕获404,执行检查,然后使用200消息呈现页面,浏览器不提供404.使用nginx反向代理页面仍然呈现但是404传递给浏览器所以这意味着Googlebot的页面出错,页面已退出索引。有没有办法阻止nginx处理该文件夹或以任何其他方式阻止404在提供200代码之前被推回到nginx?