it-swarm.cn

如何使Apache2重定向到子目录

我在具有多个虚拟主机的Debian etch上运行Apache2。

我想重定向,以便http://git.example.com转到http://git.example.com/git/

应该真的很简单,但是Google并没有削减它。我已经尝试了重定向和重写的东西,他们似乎并没有按照我的意愿做...

70
Hamish Downer

感觉有点傻-有点谷歌搜索了我所追求的答案:

RedirectMatch ^/$ /git/

基本上是重定向根,并且仅重定向根。

这段代码可以在.htaccess文件(有一个标签,所以我认为这是原始用例)。但是,如果您可以进行编辑,则主服务器Apache config会将其放在您网站的部分中,可能放在<VirtualHost> 部分。

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

115
Hamish Downer

通过重定向,您已经找到了正确的答案。在将所有内容重定向到其他位置时,您必须要小心,因为您可以在那里获得递归重定向。如果要放置维护页面,则会发生这种情况。

3
Rory

您可以使用重定向指令。

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

接受的答案解决了我的问题,但是我还发现我必须为不存在的页面添加404重定向-我的情况是在根目录下( https:// example。 com/owncloud )。

这对我有用,将所有内容发送到我的子目录:

# redirect from root to subdirectory
RedirectMatch ^/$ /thesubdirectory/

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
0
J4yne