在CakePHP中按主机名路由

时间:2010-07-15 08:41:33

标签: cakephp dns routes

是否可以在cakephp中执行特定于域的路由?

例如,假设我有2个域:manufacturer.comproductname.com

productname.com停在manufacturer.com

我想创建一条这样的路线:

Router::connect('http://www.productname.com/', array('controller' => 'products', 'action' => 'view', 'productSlug'));

所以manufacturer.com的索引​​基本上是默认的pages/index,但对于productname.com,它应该是products/view/productSlug

这可能与Cake有关吗?

2 个答案:

答案 0 :(得分:4)

我要用我提出的解决方案回答我自己的问题。

除了尝试检查路由中的域之外,更好的方法是在定义路由之前检查主机名。例如:

if($_SERVER['HTTP_HOST']=='productname.com')
   Router::connect('/', array('controller' => 'products', 'action' => 'view', 'productSlug'));
else
   Router::connect('/', array('controller' => 'pages', 'action' => 'index'));

有什么意见吗?是好是坏?我还没有测试过,但至少我没有看到任何错误:)

答案 1 :(得分:1)

这是可能的,但我可能不会使用路线来做到这一点。主要是因为当涉及到他们时我不是巫师;)。

为了您想要的灵活性,我认为您可以将所有请求路由到集中控制器(实际上可能是您的AppController)。然后让该控制器确定调用不同控制器和操作的逻辑。