.htaccess 以域为条件重写url
我正在使用带有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:.htaccess 以域为条件重写url,.htaccess,mod-rewrite,.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_HOS
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/which时,它只是重写为dev.bar.com/index.php/which,而不是pzdossier
如果我改变
RewriteRule ^(.*)$ /index.php/pzdossier/$1 [L]
到
它可以工作,我被重定向到/index.php/pzdossier/whatever
我做错了什么?为什么重定向有效,而重写无效?Codeigniter使用$\u服务器['request\u info']来确定调用哪个控制器 当我将其更改为$\u SERVER['PATH\u INFO']时,它正确地使用了我想要的.htaccess规则 因此,将application/config/config.php$config['uri\u protocol']更改为PATH\u INFO
RewriteRule ^(.*)$ /index.php/pzdossier/$1 [L,R=302]