twitterquery-stringshareurl-encoding

Sharing a URL with a query string on Twitter


I'm trying to put a Twitter share link in an email. Because this is in an email I can't rely on JavaScript, and have to use the "Build Your Own" Tweet button.

For example, sharing a link to Google:

<a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a>

This works fine. The problem I'm having is when the URL has a query string.

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>

URLs with query strings confuse Twitter's URL shortening service, t.co. I've tried URL encoding this in various ways and cannot get anything to work. The closest I have gotten is by doing this.

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456">Tweet</a>

Here I've encoded only the query string. When I do this, t.co successfully shortens the URL, but upon following the shortened link, it takes you to the encoded URL. I see http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456 in the address bar, and get the following error in the browser

Not Found

The requested URL /foo.htm?bar=123&baz=456 was not found on this server.

I'm at a loss as to how to solve this problem.

Edit: Re: onteria_

I've tried encoding the entire URL. When I do that no URL shows up in the Tweet.


Solution

  • This can be solved by using https://twitter.com/intent/tweet instead of http://www.twitter.com/share. Using the intent/tweet function, you simply URL encode your entire URL and it works like a charm.

    https://dev.twitter.com/web/intents