如何让apache2redirect到一个子目录

我在debian etch上运行apache2,使用多个虚拟主机。

我想要redirect,以便http://git.example.com转到http://git.example.com/git/

应该真的很简单,但谷歌是不是很切割它。 我已经尝试了redirect和重写的东西,他们似乎并没有做我想要的东西…

感觉有点傻 – 多一点谷歌search出了我后来的答案:

RedirectMatch ^/$ /git/ 

基本上redirect根,只有根。

这个代码可以在.htaccess文件中完成(这里有一个标签,所以我认为这是最初的用例)。 但是,如果你可以编辑,主服务器的Apacheconfiguration,然后把它放在你的网站部分可能在一个<VirtualHost>部分。

RedirectMatch的文档说上下文可以是“服务器configuration,虚拟主机,目录,.htaccess”。

你有redirect的正确答案。 将所有内容redirect到其他位置时必须小心,因为您可以在那里获得recursionredirect。 如果你想build立一个维护页面,就会发生这种情况。

你可以使用Redirect指令。

 <Directory /> Redirect permanent / http://git.example.com/git/ ... </Directory> 

接受的答案解决了我的问题,但我也发现我不得不添加一个404redirect到不存在的页面 – 我的情况是有一个OwnCloud安装位于根( https://example.com/owncloud )以下一个级别, 。

这工作对我来说,把一切发送到我的子目录:

 # redirect from root to subdirectory RedirectMatch ^/$ /thesubdirectory/ # redirect on 404 to subdirectory ErrorDocument 404 /thesubdirectory/index.php