我的网站无法与 Facebook/LinkedIn/社交爬虫协同工作。我认为这可能是由于它似乎返回了重定向标头。浏览器可以完全正常访问该网站,但各种爬虫似乎只能在多次尝试后才能访问它。
这是我正在运行的 (wordpress 自动生成的).htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我网站上的每个页面(包括索引)似乎都返回了 302 Found 状态代码,而不是我期望的 200。我不知道 302 是否是我真正应该期望的,但 Facebook 调试器抱怨“URL 请求 HTTP 重定向,但无法遵循” - 但仅在第一次尝试时出现。
请求服务器根目录,curl -I
第一次尝试将返回:
HTTP/1.1 302 Found
Connection: close
Pragma: no-cache
cache-control: no-cache
Location: /
没有其他内容。(位置是相对的而不是绝对的,这会引起问题吗?据说 RFC 2616 不再需要这个了。)
后续尝试返回:
HTTP/1.1 200 OK
Date: Thu, 18 Sep 2014 14:59:54 GMT
Server: XXXXX
X-Powered-By: XXXXX
Set-Cookie: PHPSESSID=XXXXX; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Pingback: http://XXXXX/xmlrpc.php
Content-Type: text/html; charset=UTF-8
并且 html 正常运行。
这是意料之中的事吗?为什么爬虫最初没有自动遵循重定向?也许更奇怪的是,为什么服务器会将其作为重定向返回?
为了完整起见,我的 DNS 有一个指向专用服务器 IP 的 A 记录。我读到一些 DNS 设置可能会导致此类问题,但我不明白为什么我的设置会导致此类问题?