I am trying to create short links to my application in codeigniter but I’ve met a kind of a problem when designing my route. The problem is that I want a route which will take a string containing a-Z and numbers and redirect that to a controller called image with the string after. Like this: app.com/randomstring -> app.com/image/randomstring. But when I am trying to do this in the routes config file with a regular expression it disables my application and I am unable to enter “normal” urls with controllers that already exist.
How my route looks like right now (I know it’s probably very wrongly made):
$route['(^[A-Za-z0-9]+$)'] = "image/$1";
Is there any easy way to redirect with that short url without using another fake controller first like this: app.com/i/randomstring -> app.com/image/randomstring
And could you maybe help me improve and tell me what part of my regexp is failing?
As I mentioned in the comments, without a clearly defined spec on what the image urls will be, there’s no comprehensive way to solve this. Even YouTube (related to the library you linked to) uses urls like
/watch?v=h8skj3, where “watch” is the trigger.Using a
i/r4nd0m$tringwould make this a non-issue, and it’s what I suggest, but I had another idea:You might need the image route last, I’m not 100% sure. This should route everything to
image/except the controllers you define. You could even useglob()or something to scan your controller directory for PHP files to populate the array.Another way to get one character shorter than
i/stringcould be to use a character trigger, likeexample.com/*randomstring, but that’s a little silly,i/is much cleaner and obviously, easier to deploy.