Escaped `:` separator character in URL returns a 404

I’ve tried the utility Linkchecker to check recursively all the links on my website. The util gave me the following error:

URL        `https://fourbi.eu/page:2'
Name       `‹ précédemment'
Parent URL https://fourbi.eu, line 559, col 9
Real URL   https://fourbi.eu/page%3A2
Check time 3.275 seconds
Result     Error: 404 Not Found

Basically, when using the pagination with the default page:2 generated url, the : causes a problem:

  • Linkchecker turns it into a %3A (it’s encoding the path part of the url, why? I don’t know)
  • Somewhere along the way, the %3A is not decoded as :, and Kirby returns an 404.

Should it be decoded by Apache? Or should Kirby decode the requested URL before parsing the routes?

The Linkchecker util works well with Wikipedia URLs containing : (e.g.: Template:Welcome - Wikipedia)

The website is hosted on a LAMP stack at Infomaniak.

I can confirm this on my website where I’m using param() for filter tags:

URL        `https://medienbaecker.com/articles/tag:Accessibility'
Name       `Accessibility'
Parent URL https://medienbaecker.com/articles, line 139, col 19
Real URL   https://medienbaecker.com/articles/tag%3AAccessibility
Check time 2.954 seconds
Result     Error: 404 Not Found

I’m not sure if it’s even correct to encode the colon here?

Yeah I don’t know why they encode it, but it works when checking Wikipedia links, so my expectation was that it also works on my website :sweat_smile:

Thank you, I hadn’t seen it! Linkchecker works with Wikipedia URLs containing colons. Do you know what could be their solution?

No, sorry, I don’t know. But I think the colon should not be encoded in the first place.

Thank you!