CodeIgniter路由 - 更改为处理子域?

Tom*_*ers 5 php codeigniter ruby-on-rails

我的网站是在CodeIgniter中构建的.网址格式是

domain.com/lang/id/descriptive-text 
Run Code Online (Sandbox Code Playgroud)

例如

domain.com/en/12/article-on-codeigniter-routing
Run Code Online (Sandbox Code Playgroud)

一个特定页面(Tours)具有要显示的所有巡回信息(根据id号检索).但是,我现在有一个用Ruby on Rails编写的预订系统,我需要整合.这样做的方法是必须有一个名为booking.domain.com的子域,并且每个游览页面都显示在该子域上,以便页面预订系统可以正常运行.

这意味着在ruby中编写Tours页面并从codeigniter传入信息.我知道页面是Tour还是其他页面的方式是Tour页面的id大于20但小于40.

以下是我目前的路由代码:

$route['default_controller'] = "content";
$route['en/(:num)/(:any)'] = "content/en/$1";
$route['de/(:num)/(:any)'] = "content/de/$1";
$route['es/(:num)/(:any)'] = "content/es/$1";
$route['it/(:num)/(:any)'] = "content/it/$1";
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何改变它现在反映这一新变化?我不知所措.

谢谢

Pra*_*han 3

解决方案(不修改CodeIgniter)

使用 .htaccess 进行重定向。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule    ^([^/]+)/([20][0-9]|[30][0-9]|[40]+)/([^/]+)?$    http://sub.maindomain.foo/$1/$2/$3    [L]
</ifModule>
Run Code Online (Sandbox Code Playgroud)

如果 URL 模式与规则匹配,这将重定向到子域

id 大于 20 但小于 40

如果您的主域和子域具有相同的 URL 模式,

http://maindomain.foo/en/30/article-on-codeigniter-routing

会自动重定向到

http://sub.maindomain.foo/en/30/article-on-codeigniter-routing