如何修改 503 htaccess 规则以避免“Googlebot 无法访问您的网站”错误?

Posted

技术标签:

【中文标题】如何修改 503 htaccess 规则以避免“Googlebot 无法访问您的网站”错误?【英文标题】:How can I amend 503 htaccess rule to avoid 'Googlebot can't access your site' error? 【发布时间】:2014-08-07 19:09:37 【问题描述】:

我要求网站在建设中返回 503。

我将访问者指向友好的“即将推出”页面,但 Google 网站管理员工具报告“Googlebot 无法访问您的网站”。

这是 .htaccess 中的当前规则:

<IfModule mod_rewrite.c>
RewriteEngine On

# Allow Access Locally
RewriteCond %REMOTE_ADDR !^127.0.0.1

# Prevent 503 for Maintenance Page
RewriteCond %REQUEST_URI !/maintenance [NC]
RewriteCond %REQUEST_URI !\.(jpe?g?|png|gif) [NC]

# Show Friendly 503
RewriteRule .* http://www.example.com/maintenance/index.php [R=503,L]
</IfModule>

它适用于访问者,但我如何修改规则以确保 Google 理解 503?

在我的维护文件的标题中:

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: Wed, 18 Jun 2014 01:00:00 GMT');
?>

我认为 Google 正在尝试访问 robots.txt。这应该从 503 指令中排除吗?

谢谢

【问题讨论】:

你能把你的 robots.txt 的内容放上去吗? 【参考方案1】:

替换这一行:

RewriteRule .* http://www.example.com/maintenance/index.php [R=503,L]

与:

RewriteRule !^503\.php$ /503.php [L,NC]

/503.php 里面添加http_response_code(503) 像这样:

<?php
http_response_code(503);
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: Wed, 18 Jun 2014 01:00:00 GMT');
?>

【讨论】:

谢谢。用 RewriteRule !^503\.php$ /503.php [L,NC] 替换原来的行看起来已经成功了,因为它现在“暂时无法访问”,这对于带有 Retry-After 的 503 来说是正确的。

以上是关于如何修改 503 htaccess 规则以避免“Googlebot 无法访问您的网站”错误?的主要内容,如果未能解决你的问题,请参考以下文章

在子文件夹中维护单独的.htaccess文件

浅谈.htaccess文件--避免滥用.htaccess文件

将 Joomla SEF 规则从 .htaccess 移至 vhosts.conf

.htaccess 自定义 503 页面不起作用

htaccess编写规则

.htaccess使用无限参数重写规则