red*_*lue 2 .htaccess routes codeigniter
假设我有两个不同的模块用于两个不同控制器下的站点.喜欢,index.php/controller1/...和index.php/controller2/...
现在,是否可以在子域中拥有一个控制器URL?为了说清楚,在这个例子中,是否可以index.php/controller1/...在类似mainwebsite.com/...和的URL中说index.php/controller2/...在另一个URL中controller2.mainwebsite.com/?
如果是这样,最好的方法是什么?routes.php或.htaccess?在任何一种情况下,如果你能指出我的相关链接,我会很感激如何做到这一点,这也会有所帮助.
在我看来,你想要做的事情有点傻,但是,我想这不是我要说的地方.
就我而言,以下是您的选择:
修改您的apache配置或.htaccess文件,使用mod_rewrite将对特定子域的调用重定向到特定控制器:
例如(我没有测试过这个):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog.example.com$
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/blog/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我认为这至少应该指向正确的方向.当然,这假设您的子域指向相同的IP地址,并且apache虚拟主机设置为将该子域指向与您的普通域相同的目录.
您还需要将所有链接指向子域并省略控制器.因此,如果URL通常是:http://www.example.com/blog/cat/awesome,那么您需要将链接指向http://cart.example.com/cat/awesome.所以,你不能再像以前那样使用漂亮的助手功能site_url('cart/cat/awesome')了 - 对我来说这将是一个很大的转折点.
我希望这是有道理的.
设置CI实例以支持多个应用程序,并让子域指向相应的应用程序目录
有关更多信息,请访问:http://codeigniter.com/wiki/Multiple_Applications/
使用Route类做一些疯狂的事情:
在你的routes.php配置文件中:
if(preg_match('/^blog/',$_SERVER['HTTP_HOST'])) {
$route['(:any)/(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3/$4';
$route['(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3';
$route['(:any)/(:any)'] = 'blog/$1/$2';
$route['(:any)'] = 'blog/$1';
$route['blog'] = 'blog/index';
}
Run Code Online (Sandbox Code Playgroud)
如果您的任何页面需要超过4个URI部分,只需在路径规则的顶部添加另一行.我甚至都不知道这是否会起作用......但它可能会.我肯定会给它一个机会,因为它可能是最少量的工作.
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |