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.
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.