用域作为条件重写url

时间:2013-05-27 08:54:17

标签: .htaccess mod-rewrite

我正在使用带有mod_rewrite和codeigniter的apache来进行路由。

我有两个单独的(通配符)域名指向我的网站,例如:* .foo.com和* .bar.com

* .foo.com/somepath应重写为* .foo.com / index.php / somepath

和* .bar.com.somepath应重写为* .bar.com / index.php / bar / somepath

这是我的.htaccess:

RewriteEngine on

RewriteCond %{HTTP_HOST} [^.]{3}\.bar\.com [NC]
RewriteCond $1 !(index\.php|assets|favicon|bar)
RewriteRule ^(.*)$ /index.php/pzdossier/$1 [L] 

RewriteCond $1 !(index\.php|assets|favicon)
RewriteRule ^(.*)$ /index.php/$1 [L]

当我去dev.foo.com/whatever

时,这给了我正确的结果

但是当我去dev.bar.com/ww它只是改写为dev.bar.com/index.php/whatever而不是pzdossier。

如果我改变

 RewriteRule ^(.*)$ /index.php/pzdossier/$1 [L] 

 RewriteRule ^(.*)$ /index.php/pzdossier/$1 [L,R=302] 

它有效,我被重定向到/index.php/pzdossier/whatever。

我做错了什么?为什么重定向工作,但重写没有?

1 个答案:

答案 0 :(得分:0)

Codeigniter正在使用$ _SERVER ['request_info']来确定要调用的控制器。

当我将其更改为$ _SERVER ['PATH_INFO']时,它正确地使用.htaccess规则。

所以将application / config / config.php $ config ['uri_protocol']更改为PATH_INFO