所以我mydomain.tld
,www.mydomain.tld
和res.mydomain.tld
都指向同一个目录:/var/www/mydomain
。在那个目录中,有我的codeigniter应用程序。
所以我要做的是将通过res.mydomain.tld
发出的所有请求转发给名为resources
的特定控制器。
我有什么:
RewriteCond %{HTTP_HOST} ^res\.mydomain\.tld$
RewriteRule ^(.*)$ /index.php?/resources/$1 [L]
这会产生服务器错误,我的重写日志没有提供任何关于原因的线索;它只是显示了一些应用于请求字符串的非常奇怪的逻辑。
知道为什么这不起作用?
答案 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]