# Routing question

**URL:** <https://www.ruby-forum.com/t/routing-question/89005>\
**Category:** Rails\
**Created:** [March 16, 2007, 2:04pm UTC](https://www.ruby-forum.com/t/routing-question/89005 "2007-03-16T14:04:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![thelorax](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/a6a055/32.png) [@thelorax](https://www.ruby-forum.com/u/thelorax)\
**Post date:** [March 16, 2007, 2:04pm UTC](https://www.ruby-forum.com/t/routing-question/89005/1 "2007-03-16T14:04:15Z")

</div>

Hello. I’m adding an admin section to my site and have configured  
routing along the following lines:

map.connect ‘admin/:controller/:action/:id’

The above works fine. However, if I have controller ‘A’, it is still  
accessible from [http://mysite.com/A](http://mysite.com/A) due to the  
default :controller/:action/:id route. I’d rather not have two URIs  
mapped to the same page and am wondering if there is a way to exclude  
a controller from a route or to alter the path to  
[00server.com -- $0 setup fee and $0 monthly fee, free web page, free domain name, web site design, free web space, web page design, free web hosting, free e-mail, free web site, free web site hosting](http://mysite.com/admin/A)  
when a user visits [http://mysite.com/A](http://mysite.com/A). As of now, my only solution  
is to remove the :controller/:action/:id route, but this means I would  
have to map routes for every controller I want accessible at my  
webroot which is kind of a pain and doesn’t seem very rails like.

Thanks.

---

<div class="post-metadata">

**Author:** ![thelorax](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/a6a055/32.png) [@thelorax](https://www.ruby-forum.com/u/thelorax)\
**Post date:** [March 16, 2007, 2:56pm UTC](https://www.ruby-forum.com/t/routing-question/89005/2 "2007-03-16T14:56:26Z")

</div>

I don’t know the solution to what you are asking about excluding  
controllers.

I think the namespacing of controllers has been discussed before and  
some people like it some people don’t.

Name your admin controllers Admin::AdminTestController and place them  
in admin/admin\_test\_controller.rb

script/generate controller Admin::AdminTestController

This can then be accessed with admin/admin\_test without modifying the  
stock routes.

That should solve your problem if I read your post correctly.

I’m assuming you have some sort of authentication too, that could be  
used to restrict access to the controllers except for admin users.

Fredrik

---

<div class="post-metadata">

**Author:** ![thelorax](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/a6a055/32.png) [@thelorax](https://www.ruby-forum.com/u/thelorax)\
**Post date:** [March 16, 2007, 3:11pm UTC](https://www.ruby-forum.com/t/routing-question/89005/3 "2007-03-16T15:11:34Z")

</div>

thelorax wrote:

> The above works fine. However, if I have controller ‘A’, it is still  
> accessible from [http://mysite.com/A](http://mysite.com/A) due to the  
> default :controller/:action/:id route. I’d rather not have two URIs  
> mapped to the same page and am wondering if there is a way to exclude  
> a controller from a route or to alter the path to [http://mysite.com/admin/A](http://mysite.com/admin/A)  
> when a user visits [http://mysite.com/A](http://mysite.com/A).  
> you can use the :requirements param of the route, so you can match  
> :controller against a regexp. If the pattern is not matched, then the  
> route will not be recognized for that request

regards,

javier ramirez

## –

Estamos de estreno… si necesitas llevar el control de tus gastos  
visita [http://www.gastosgem.com](http://www.gastosgem.com) !!Es gratis!!

---

<div class="post-metadata">

**Author:** ![thelorax](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/a6a055/32.png) [@thelorax](https://www.ruby-forum.com/u/thelorax)\
**Post date:** [March 16, 2007, 7:20pm UTC](https://www.ruby-forum.com/t/routing-question/89005/4 "2007-03-16T19:20:08Z")

</div>

Thanks. Both the Admin::Controller and the :requirements option look  
like they might work for me.
