1

我正在使用 MVC,特别是 Codeigniter。

我需要在我正在构建的服务上创建一个子域。将服务的更多“移动”朋友版本传递给用户。通过 m.example.com。通常我只会添加一个虚拟主机,将所有内容放在一个文件夹中,依此类推,但由于我在这个项目中使用 MVC,所以大部分功能都存在于模型和库中,这些模型和库对于视图甚至是不可知的控制器,只要他们有输出。

所以我目前的思路是,在机器上创建一个与当前使用的 mvc 完全相同的东西的全新文件夹,只是为了将其用作 m.example,这将是一种资源浪费。 com。所以我想知道(因为它目前与 index.php 以这种方式工作)有没有办法说我通过 htaccess 假设当通过 m.example.com 的流量通过时,我使用特定的控制器路径,而不是文件夹小路?这样一来,就像它的大哥 index.php m.php(本例中的控制器)一样,可以处理所有核心流量,并且只有一堆连接到模型、库等的函数。

在我在下面对某人发表的评论中,我说:

不,m.php 不在根目录中,它是一个控制器。我正在尝试将任何对 m.example.com 的请求路由到 m.php 控制器(m.php 在控制器目录中,遵循 MVC 模式),我可以按照 MVC 逻辑访问http://example.com/m/function/param/,但我想拥有它,所以http://m.example.com/function/param/等于mvc 逻辑

这最终意味着我试图通过 .htaccess 或其他方式提出一个逻辑,即http://example.com/m/function/param/http://m.example.com/function/param/是完全相同的东西,最好不要制作整个 CI 安装和我在其上构建的代码的镜像副本,并将其放在名为mexample 的目录中。我强调这个原因似乎有些混乱。

4

2 回答 2

2

您可能想看看这个,只需将其更改为使用 HTTP_HOST 而不是此处显示的 user_agent 库

http://digitizor.com/2011/12/05/codeigniter-mobile-browser/

于 2012-10-26T04:38:25.653 回答
1

如果您已经拥有m.php控制器,则m.example.com的 DNS指向同一服务器,并且您已将服务器设置为托管m.example.comexample.com的相同文档根目录,那么这就是全部您需要在文档根目录的 htaccess 文件中:

RewriteEngine On

# this condition ensures the request is for m.example.com
RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]

# the usual routing conditions (may need to be changed to suit your specific needs)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# you can alternatively use this
# RewriteCond %{REQUEST_URI} !^/m.php

# route
RewriteRule ^(.*)$ /m.php [L]

# or
# RewriteRule ^(.*)$ /m.php/$1 [L]
# RewriteRule ^(.*)$ /m.php?url=$1 [L,QSA]

这需要超越处理主站点路由的任何规则。

于 2012-10-26T04:34:13.983 回答