如何使Apache2重定向到子目录


65

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

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

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


您可以通过多种方法来解决此问题,但是您到底要实现什么目标?
WerkkreW

Answers:


111

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

RedirectMatch ^/$ /git/

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

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

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


2
好的,那么将这行代码放在哪里?
user230910

我必须输入完整的URI(https://example.com/git/)才能正常工作。奇怪。
Mat M

3

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


4
确实。Redirect / /git/导致递归烟花。
达沃·乔西波维奇

3

您可以使用重定向指令。

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

0

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

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

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

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

2
ErrorDocument应该返回错误页面,而不是有用的文档。这对爬虫很重要。
乔纳·本顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.