Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 以域为条件重写url_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 以域为条件重写url

.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

我正在使用带有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/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]