mod_rewrite:子域到控制器

时间:2011-07-23 19:33:11

标签: php codeigniter mod-rewrite subdomain

所以我mydomain.tldwww.mydomain.tldres.mydomain.tld都指向同一个目录:/var/www/mydomain。在那个目录中,有我的codeigniter应用程序。

所以我要做的是将通过res.mydomain.tld发出的所有请求转发给名为resources的特定控制器。

我有什么:

RewriteCond %{HTTP_HOST} ^res\.mydomain\.tld$
RewriteRule ^(.*)$ /index.php?/resources/$1 [L]

这会产生服务器错误,我的重写日志没有提供任何关于原因的线索;它只是显示了一些应用于请求字符串的非常奇怪的逻辑。

知道为什么这不起作用?

3 个答案:

答案 0 :(得分:4)

将.htaccess留在之前。

在你的routes.php中

if($_SERVER["SERVER_NAME"]=="res.mydomain.tld"){
    $route['default_controller'] = "resources";
}else{
    //$route['default_controller'] = Your default controller...
}

答案 1 :(得分:3)

您创建了一个无限循环。它继续重写,因为规则总是匹配,并再次匹配。只需在规则上方添加如下规则

即可
RewriteRule ^index.php - [L]

如果(已经重写的)url以index.php开头,这将阻止其下面的任何剩余规则执行

答案 2 :(得分:2)

确保index.php不匹配并进入重写循环:

RewriteCond %{REQUEST_URI} !^index\.php
RewriteCond %{HTTP_HOST} ^res\.mydomain\.tld$
RewriteRule ^(.*)$ /index.php?/resources/$1 [L]