The previous fix failed to consider links like
"redd.it/r/.../comments/...". Those don't really exist in the wild, and
they don't work (when redirects are turned off). Still, play it safe
and don't add "/comments" prefix unless the path has height 1.
Now, redirects should work for
- redd.it/foo
- redd.it/comments/foo
- redd.it/r/bar/comments/foo
even though the only kind of native link that works is
- redd.it/foo
Although I have never seen it in the wild, it is possible to navigate to
"redd.it/comments/...". This should redirect to
"teddit.net/comments/..." in the case of instance teddit.net. However,
the current code redirects it to "teddit.net/comments/comments/...".
Fix it by avoiding adding the prefix if it's already there.
If you try visiting a redd.it site like <https://redd.it/1fwqjw> (first
link that came up when searching "site:redd.it"), you may think that the
redirect works because it goes to your configured instance. However,
there's a leak: redd.it is a redirect to a www.reddit.com site, and
that's when the redirect to instance happens. If you observe the
network traffic, you'll see that a GET request goes to redd.it, and
redd.it returns HTTP code 302 and location https://www.reddit.com/...
Let's not do that. Redirect at redd.it so that requests don't hit
reddit servers. This does not seem to work for teddit instances, so
don't redirect for them.
Teddit image urls are different from libreddit. Handle each separately.
Test manually:
- libredd.it: pass
- libreddit.spike.codes: pass
- libreddit.kavin.rocks: pass
- libreddit.insanity.wtf: fail (site doesn't work in general)
- libreddit.dothq.co: pass
- teddit.net: mostly fail
- teddit.ggc-project.de: mostly fail
- teddit.kavin.rocks: mostly fail
- old.reddit.com: fail
- i.reddit.com: fail
- snew.notabug.io: fail (site doesn't work in general)
Teddit image urls have two issues. First, the links almost never work
(404) if the image url is visited directly before visiting the main
page. Once the main page is visited, however, the image url starts
working. I'm guessing this is an issue with teddit instances not
fetching images unless the main page is accessed. Second, some image
links are different/incompatible for some reason. For example,
<https://i.redd.it/htg3owj12ok21.png> turns into
<https://teddit.net/pics/w:null_TpEyuHnjif6578pV0lBuM-kNW1bXqxbvqbOHjhRZVr0.png>.
Libreddit seems to not have this issue.
Add "i.redd.it" to list of urls to redirect for Reddit. Although the
redirect works, the link should be invalid because it still needs an
"img" path prefix.