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

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

应该很简单,但是Google并不完全削减它。我已经尝试了“重定向”和“重写”的东西,但是它们似乎并没有达到我想要的...

评论

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

#1 楼

感觉有点傻-谷歌搜索找到了我想要的答案:

RedirectMatch ^/$ /git/


基本上重定向了根,只重定向了根。

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

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

评论


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

–user230910
17年1月10日下午5:41

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

– Mat M
17年9月22日在14:09

#2 楼

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

评论


确实。重定向/ / git /会导致递归烟花。

–达沃·乔西波维奇(Davor Josipovic)
2015年5月9日20:51

#3 楼

您可以使用Redirect指令。

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


评论


这行不通!首先,标签用于本地文件系统路径,而不用于url。对于url,请使用标签。其次,“重定向”与左侧的部分网址匹配。因此,/ git也是匹配项,从而创建了无限重定向循环。

–放友情留在无盐
19/12/12在13:04

#4 楼

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

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

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

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


评论


ErrorDocument应该返回错误页面,而不是有用的文档。这对于爬虫很重要。

–乔纳·本顿(Jonah Benton)
16年9月11日在22:01