Why does Twitter use a hash and exclamation mark in URLs, and how do they rewrite search URLs?

六月ゝ 毕业季﹏ 提交于 2019-12-17 15:55:08

问题


We understand the hash is for AJAX searches, but the exclamation mark? Anyone know?

Also, the "action" attribute for their search form points to "/search," but when you conduct a search, the hash exclamation mark appears in the URL. Are they simply redirecting from "/search" to "/#!/search"?

Note: the second part of the q remains unanswered: That is, are they redirecting the user from "/search" to "/#!/search", or do they send the user to "/search" and use JS on the page to rewrite the URL? – Crashalot Jan 26 at 23:51

Thanks!


回答1:


To answer the second part then: It is redirecting you to /#!/search.

If you look at the response headers when going to http://twitter.com/britishdev (plug plug) you are returned a 302 (temporary redirect) with the Location header set as "Location: http://twitter.com/#!/britishdev"

Yes JavaScript is then pulling all your detail in on the destination page but regardless that is where you are redirected to.




回答2:


It's become the de facto standard that Google has established to ensure consistency and make ajax urls crawlable.

See http://code.google.com/web/ajaxcrawling/docs/getting-started.html

I believe they are using history.pushState. You can do history.back() in the console and it'll lead you back to the page.




回答3:


Yes, it redirects with HTTP 302.

By the way, "!" is used to eliminate the case with an empty hash. "http://url#" will make a browser to slide to the top.



来源:https://stackoverflow.com/questions/4739667/why-does-twitter-use-a-hash-and-exclamation-mark-in-urls-and-how-do-they-rewrit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!