I am running apache2 on Debian etch, with multiple virtual hosts.

I want to redirect so that http://git.example.com goes to http://git.example.com/git/

Should be really simple, but Google isn't quite cutting it. I've tried the Redirect and Rewrite stuff and they don't quite seem to do what I want ...

  • There are many ways you could approach this, but what is exactly what you are trying to accomplish? – WerkkreW May 19 '09 at 17:24

Feel a bit silly - a bit more googling turned up the answer I was after:

RedirectMatch ^/$ /git/

Basically redirecting the root, and only the root.

This code could do in a .htaccess file (there is a tag for this, so I assume that is the original use case). But if you can edit ,the main server apache config then put it in the section for your website probably inside a <VirtualHost> section.

The docs for RedirectMatch say that the context can be "server config, virtual host, directory, .htaccess".

  • 3
    ok, so where to put this line of code? – user230910 Jan 10 '17 at 5:41
  • 1
    I had to put a full URI (https://example.com/git/) for this to work. Strange. – Mat M Sep 22 '17 at 14:09
  • You have to use double quotes as per documentation you've linked. – Kiril Apr 23 at 15:08

You've got the correct answer there with the redirect. You have to be careful when redirecting everything to somewhere else, since you can get recursive redirects there. This happens if you want to put up a maintenance page.

  • 6
    Indeed. Redirect / /git/ results in recursive fireworks. – Davor Josipovic May 9 '15 at 20:51

You can use Redirect directive.

<Directory />
   Redirect permanent / http://git.example.com/git/
  • 2
    This NOT work! Firstly, <Directory ...> tags are used for local filesystem path, not for url. For url use <Location ...> tags. Secondly, "Redirect" matches partial url from the left. Thus /git is also a match, creating a infinite redirect loop. – 把友情留在无盐 Dec 12 '19 at 13:04

The accepted answer resolved my issue, but I also found that I had to add a 404 redirect for non-existant pages -- my situation is that have an OwnCloud installation located one level below root (https://example.com/owncloud).

This worked for me, to send everything to my subdirectory:

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

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
  • 2
    ErrorDocument should return an error page, not a useful document. This is important for crawlers. – Jonah Benton Sep 11 '16 at 22:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.