重写CI网址

时间:2011-05-13 18:35:05

标签: php codeigniter url-rewriting rewrite

除了删除我的CodeIgniter安装的index.php部分之外,我从未重写过URL,而且我在.htaccess文件中使用了一个复制粘贴的代码段。我没有时间真正了解代码片段的作用;我基本上很擅长重写网址。

我有我的网络应用程序的移动版本。我将移动用户重定向到子域名m.myhost.tld。但是,由于我使用(一个)CodeIgniter(安装),我必须将这些移动用户发送到特定于移动设备的控制器,在我的情况下/mobile/。因此,控制器始终显示在我的地址栏中。

我只是觉得这不是很干净,我正在寻找一种重写URL的方法;但事实是,我甚至不确定这是否可能......因此我的问题。 我想摆脱/mobile控制器部分。这可能吗?

一些例子:

我当前的移动“root”文件夹是

http://m.myhost.tld/mobile

我想把这个变为

http://m.myhost.tld/

目前,当我转到http://m.myhost.tld/时,它会重定向到我的CodeIgniter应用程序的默认控制器,该应用程序是Web应用程序的“桌面”版本的一部分。

另一个例子:

转动

http://m.myhost.tld/mobile#mobile/about

进入

http://m.myhost.tld/#mobile/about

我不确定我在这里是否有任何意义。我在脑子里,但就像我说的那样,我不知道可能是什么。如果用户位于m子域,我想隐藏我的网址的/mobile部分。但是,只有当我们在m子域上时,才会触及“桌面”版本(位于www)。

就像我现在说过几次,我不确定什么是可能的,我正在寻找的东西可能只是太复杂或什么。我想我会问,因为通过询问学习是我最擅长的。如果事实证明这是一个愚蠢的问题,请不要太苛刻,先生专业人士;)

编辑: 我以为我会编辑,因为我不想出错。我不一定在寻找我的问题的确切答案。我也欢迎可以指导我找到解决方案的文档/教程/文章。如果我能设法找到自己的解决方案,我当然会学到很多东西。

非常感谢。

2 个答案:

答案 0 :(得分:2)

这可能是一个简单的解决方案,但为什么不在你的路由配置中做一些简单的事情,如

在您的配置中

执行类似

的操作
if ($_SERVER['SERVER_NAME'] == 'm.myhost.tld')
    $route['default_controller'] = "mobile";

这会使默认的控制器移动,所以你不必拥有/ mobile ...

正如我所说的那么简单

答案 1 :(得分:0)

编辑:不起作用,但也许某人可以将其转变为

试试这个:

RewriteCond $1!^mobile/
RewriteCond %{HTTP_HOST} ^m\.myhost\.tld
RewriteRule (.*) /mobile/$1 [L]