Looking at the code I'm proposing to have this on vibed as a general url rewrite hook:

/// URLRewriter request handler
alias HTTPServerURLRewriter = void function(HTTPServerRequest req);
...
interface HTTPRouter : HTTPServerRequestHandler {

@property string prefix() const;
@property HTTPServerURLRewriter url_rewriter(); //<<<< new
@property void url_rewriter(HTTPServerURLRewriter cb); // <<<< new

...
final class URLRouter : HTTPRouter {

private {
	version (VibeRouterTreeMatch) MatchTree!Route m_routes;
	else Route[] m_routes;
	string m_prefix;
	HTTPServerURLRewriter m_url_rewriter;
}

...

@property string prefix() const { return m_prefix; }

@property void url_rewriter(HTTPServerURLRewriter cb) { m_url_rewriter = cb; }
@property HTTPServerURLRewriter url_rewriter() { return m_url_rewriter; }

...

void handleRequest(HTTPServerRequest req, HTTPServerResponse res)
{
	if(m_url_rewriter !is null)
	{
		m_url_rewriter(req);
	}
	auto method = req.method;

static void url_rewriter(HTTPServerRequest req)
{

const string prefix = "/internal";
if( req.path.indexOf(prefix) == 0 )
{
	req.path = req.path[prefix.length..$];
}

}
...

auto router = new URLRouter;
router.url_rewriter = &url_rewriter;