2

Just starting to try to get the hang of how all the directives and options work under Apache.

I'd like to do a redirect with my one site (only running one site on the server) so that when a request comes in to http:/example.com the server automatically redirects them to a sub-url of http://example.com/mylink.

I have tried putting redirects into the file located in /etc/apache2/sites-enabled to rewrite this, but then the top level domain URL complains it isn't redirecting properly.

I think what I want is a browser redirect, and thought using

RewriteEngine On RewriteRule ^/$ /mylink [L,R] 

would work, but putting it into an .htaccess file didn't work (it redirected but immediately gave a 500 internal server error.)

Putting it into the file in /etc/apache2/sites-enabled gives a configuration error when trying to restart Apache.

I know it's something simple...but what am I missing?

2 Answers 2

6

Try a RedirectMatch, instead:

RedirectMatch permanent ^/$ http://mysite.com/mylink 

They're often easier when you're after a simple redirect, whereas Rewrites come into their own when you don't want the end user to see the results.

4
  • 1
    Worked when I put it into the /etc/apache2/sites-enabled/sitefile! Thanks! Commented Jun 30, 2011 at 15:42
  • +1 for the simple solution. @Bart If you do try to use mod_rewrite in the future and have similar issues, you'll need to be more forthcoming with the details, such as what's in the error log; 500 errors on untouched URLs don't add up. Commented Jun 30, 2011 at 16:02
  • You already touched on the .htaccess not working, @Shane. The only thing in the error log was saying that RewriteEngine is an invalid command in .htaccess. The other attempts showed nothing in the error log. Commented Jun 30, 2011 at 16:06
  • @Bart To clarify, it'll work just fine in .htaccess, but it expects relative paths when they're used in that context (or <Directory>). I know your issue is solved (and the solution is better than using mod_rewrite, for sure) - just trying to clear up misconceptions on mod_rewrite for if/when you do need to use it, since as you said, you're just starting to get the hang of this stuff. Commented Jun 30, 2011 at 16:23
0

Where are you putting it in the site file? That should work just fine in the <VirtualHost> context, but not in the .htaccess file or <Directory> context (those expect relative, not absolute, paths).

Then again, they shouldn't blow up the config or cause 500 errors, either - just not redirect. Should be something interesting in error.log.

When you say it redirected then 500 errored, the 500 came back on the "new" URL? Does it 500 when you go directly to it, avoiding the redirect?

1
  • I tried it in the virtualhost block and in an .htaccess file. Yes, the 500 error came from the new url. Commented Jun 30, 2011 at 15:37

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.