我正在使用带有 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/whatever 时,它只是重写为 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。
我究竟做错了什么?为什么重定向有效,但重写无效?