我拥有域名penkov.id.au。我使用blog托管github,子域michael.penkov.id.au
的A记录指向github页面服务器(204.232.175.78)。
bash-3.2$ dig michael.penkov.id.au +nocomments +nocmd +nostats
; <<>> DiG 9.8.3-P1 <<>> michael.penkov.id.au +nocomments +nocmd +nostats
;; global options: +cmd
;michael.penkov.id.au. IN A
michael.penkov.id.au. 86400 IN A 204.232.175.78
penkov.id.au. 14399 IN NS ns1.linode.com.
penkov.id.au. 14399 IN NS ns5.linode.com.
penkov.id.au. 14399 IN NS ns4.linode.com.
penkov.id.au. 14399 IN NS ns2.linode.com.
penkov.id.au. 14399 IN NS ns3.linode.com.
ns1.linode.com. 62648 IN A 69.93.127.10
ns1.linode.com. 136520 IN AAAA 2600:3c00::a
ns2.linode.com. 67499 IN A 65.19.178.10
ns2.linode.com. 122812 IN AAAA 2600:3c01::a
ns3.linode.com. 124971 IN A 75.127.96.10
ns3.linode.com. 133162 IN AAAA 2600:3c02::a
ns4.linode.com. 96383 IN A 207.192.70.10
ns4.linode.com. 904 IN AAAA 2600:3c03::a
ns5.linode.com. 44638 IN A 109.74.194.10
ns5.linode.com. 56329 IN AAAA 2a01:7e00::a
最近(大约一个月前,可能更多),我发现所有对子域的请求(例如http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html)都得到302响应。对于像facebook.com这样的网站来说,这是一个问题,它不会费心访问该网址来提供预览。 302重定向的Github notes不是错误,应该,但Facebook显然忽略了这一点。
我看了一下请求&amp;使用Chrome调试工具的响应标头:
请求:
GET /blog/2014/01/02/reinventing-the-wheel.html HTTP/1.1
Host: michael.penkov.id.au
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ja;q=0.6,ru;q=0.4
Cookie: __utma=146715829.533338776.1383309288.1383487335.1383547294.7; __utmz=146715829.1383309288.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=118121621.1819750941.1383609188.1387026971.1388676605.15; __utmb=118121621.11.10.1388676605; __utmc=118121621; __utmz=118121621.1387026971.14.7.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/
If-Modified-Since: Thu, 02 Jan 2014 14:38:15 GMT
响应:
HTTP/1.1 302 Found
Connection: close
Pragma: no-cache
cache-control: no-cache
Location: /blog/2014/01/02/reinventing-the-wheel.html
最后,重现此问题的一种可靠方法是使用Facebook URL debugging tool。将其指向http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html以查看问题。
我的问题:
答案 0 :(得分:15)
这是我从github支持中听到的内容:
指向204.232.175.78的A记录是导致302重定向的原因。
在我的DNS设置中用CNAME(指向mpenkov.github.com)替换A记录解决了这个问题。
供参考,这是我的DNS记录现在的样子:
misha@misha-antec:~$ dig michael.penkov.id.au +nocomments +nocmd +nostats
; <<>> DiG 9.8.1-P1 <<>> michael.penkov.id.au +nocomments +nocmd +nostats
;; global options: +cmd
;michael.penkov.id.au. IN A
michael.penkov.id.au. 85536 IN CNAME mpenkov.github.com.
mpenkov.github.com. 2736 IN CNAME github.map.fastly.net.
github.map.fastly.net. 25 IN A 103.245.222.133
答案 1 :(得分:12)
巧合的是,我遇到了类似的问题,因为我正在使用CloudFlare在顶点域上管理我的DNS和GitHub页面。我有两条A记录指向GitHub页面服务器192.30.252.153
192.30.252.154
和一个指向根域的www子域上的CNAME。
我向GitHub支持我一直看到的随机302重定向,他们告诉我这个:
因为您正在使用带有A记录的Cloudflare,所以您正在使用我们的拒绝服务(DOS)缓解技术。
为了避免此问题,您可以使用子域,例如blog.example.com,而不是顶点域,例如example.com,作为GitHub页面的CNAME。此子域将由我们的内容交付网络提供支持,不会返回302。
如果您想使用apex域名,则需要将它们直接指向GitHub页面IP。
幸运(或不),CloudFlare确实提供了违反RFC合规性并允许使用CNAME records on naked domains的机会。当然它可能会破坏电子邮件服务,但我很好,因为我没有使用它。
希望这有助于某人。
答案 2 :(得分:1)
我遇到了200
HTTP响应。:
GET http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html
HTTP/1.1 200 OK
Server: GitHub.com
Date: Thu, 02 Jan 2014 16:04:17 GMT
Content-Type: text/html
Connection: keep-alive
Content-Length: 10314
Last-Modified: Thu, 02 Jan 2014 14:38:15 GMT
Expires: Thu, 02 Jan 2014 16:14:17 GMT
Cache-Control: max-age=600
Vary: Accept-Encoding
Accept-Ranges: bytes
Vary: Accept-Encoding
您可能正在等待Facebook(和其他服务')DNS缓存刷新。它不应该超过48小时。我可以有时让Facebook调试器返回200
,但它仍然有错误,因为页面上的这个HTML标记指向其他位置:
<link rel="canonical" href="http://penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html" />