CodeIgniter4 icon indicating copy to clipboard operation
CodeIgniter4 copied to clipboard

Bug: Inconsistent hostname/subdomain limitation in Routing

Open kenjis opened this issue 2 years ago • 4 comments

CodeIgniter version: 4.3.1

(1) hostname takes precedence over subdomain if a route has both:

$routes->get('/', 'Home::index');
$routes->get('/', 'Media::index', ['hostname' => 'media.example.com:8888', 'subdomain' => '*']);

http://media.example.com:8888/ci431/public/App\Controllers\Media::index http://user.example.com:8888/ci431/public/App\Controllers\Home::index

(2) subdomain takes precedence over hostname if two routes matches:

$routes->get('/', 'Home::index');
$routes->get('/', 'Media::index', ['hostname' => 'media.example.com:8888']);
$routes->get('/', 'All::index', ['subdomain' => '*']);

http://media.example.com:8888/ci431/public/App\Controllers\All::index http://user.example.com:8888/ci431/public/App\Controllers\All::index

kenjis avatar Feb 02 '23 05:02 kenjis

On the forum, I already suggested the idea of ​​creating a unique key for registering a route, like domain + path. (As it turned out, the same is used in Laravel).

This would solve the existing problem. And it would also be possible to create a cache of routes, which in my opinion would be a good solution if the application uses many modules with routes.

iRedds avatar Feb 03 '23 03:02 iRedds

First of all, I think it is necessary to determine whether this is really a bug and decide what the specification should be.

What about router implementations other than Laravel?

kenjis avatar Feb 03 '23 03:02 kenjis

If the "hostname" or "subdomain" options are specified and the path matches, then the route will be overwritten by the last one added. This is what happens in example 2.

If you're expecting Media::index but have All::index, then yes, it's a bug.

Symfony - route name Yii - route name ?? methods + domain + pattern That is, a unique route key is used.

As an alternative, we may not use an associative array.

iRedds avatar Feb 03 '23 05:02 iRedds

So... is there a consensus here?

ping-yee avatar Sep 18 '23 08:09 ping-yee