我正在使用带有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。
我做错了什么?为什么重定向工作,但重写没有?
答案 0 :(得分:0)
Codeigniter正在使用$ _SERVER ['request_info']来确定要调用的控制器。
当我将其更改为$ _SERVER ['PATH_INFO']时,它正确地使用.htaccess规则。
所以将application / config / config.php $ config ['uri_protocol']更改为PATH_INFO