Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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!

like image 318
Crashalot Avatar asked Jan 19 '11 19:01

Crashalot


3 Answers

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.

like image 74
meder omuraliev Avatar answered Oct 18 '22 02:10

meder omuraliev


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.

like image 25
tester Avatar answered Oct 18 '22 02:10

tester


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.

like image 10
BritishDeveloper Avatar answered Oct 18 '22 01:10

BritishDeveloper