mod_rewrite:从子域redirect到主域

我有两个域 – domain.com和forum.domain.com指向相同的目录。

我想redirect从forum.domain.com所有请求到domain.com(例如:forum.domain.com/foo到domain.com/forum/foo),而无需在地址栏(隐藏redirect)中更改地址。

我写了这样的东西,把它放到.htaccess文件中:

Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^forum\.example\.net$ RewriteRule (.*) http://example.com/forum/$1 [L] RewriteCond %{REQUEST_FILENAME} !-s [NC] RewriteCond %{REQUEST_FILENAME} !-d [NC] RewriteRule ^(.+) index.php/$1 [L] 

这只适用于我添加redirect指令:

 RewriteRule (.*) http://example.com/forum/$1 [R,L] 

但它会改变地址栏中的以前的地址。

编辑:

好吧,让我们简单一点。 我在本地计算机的c:\ windows \ system32 \ drivers \ etc \ hosts的末尾添加了这两行:

 127.0.0.3 foo.net 127.0.0.3 forum.foo.net 

现在,我创build了两个虚拟主机:

 <VirtualHost foo.net:80> ServerAdmin [email protected] ServerName foo.net DocumentRoot "C:/usr/src/foo" </VirtualHost> <VirtualHost forum.foo.net:80> ServerAdmin [email protected] ServerName forum.foo.net DocumentRoot "C:/usr/src/foo" </VirtualHost> 

..和目录名为“富”,在那里我把两个文件:.htaccess和index.php。

index.php文件:

 <?php echo $_SERVER['PATH_INFO']; ?> 

的.htaccess:

 Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^forum\.foo\.net$ RewriteCond %{REQUEST_URI} !^/forum/ RewriteCond %{REQUEST_FILENAME} !-s [NC] RewriteCond %{REQUEST_FILENAME} !-d [NC] RewriteRule ^(.+)$ /index.php/forum/$1 [L] RewriteCond %{HTTP_HOST} !^forum\.foo\.net$ RewriteCond %{REQUEST_FILENAME} !-s [NC] RewriteCond %{REQUEST_FILENAME} !-d [NC] RewriteRule ^(.+) index.php/$1 [L] 

当我在地址栏中input地址http://forum.foo.net/test时,显示/ forum / test这是很好的。 http://foo.net/a/b/c显示/ a / b / c哪个好。 但! http://forum.foo.net/显示空值(应显示/论坛 )。

启用mod_proxy并使用P标志。