-3

How can I create a rewrite rule which rewrites the browser url such that requests to www.domain.net/sub is always shown as sub.domain.net?

No redirection of the page is needed.

1
  • Please use the search function next time. There are literally dozens of questions on here where you'd find your answer. Oct 8, 2012 at 1:33

3 Answers 3

2

If I understand you correctly, what you want is this:

  • The client types in www.domain.net/sub in his browser
  • The text in the address field of the browser changes to sub.domain.net
  • The contents shown are still the same

If so, you must have a redirect. That's the way to do the change in the address bar. You can't just edit the browser address bar on somebody else's computer.

So the first thing you do is the redirect as posted by LogicWreck. Then you add a VirtualHost entry either to your httpd.conf or your .htaccess file, containing something like

<VirtualHost *:80>
     DocumentRoot /path/to/webfiles/sub
     ServerName sub.domain.net
</VirtualHost>

and probably some more directives; have a look at httpd.apache.org You could also add another rewrite rule to find the files under the correct directory, but generally speaking a normal VirtualHOst would be better.

If you want to use a rewrite rule instead of VirtualHost, you would do something like this:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(sub.domain.net)$
RewriteRule /(.*) /path/to/webfiles/sub/$1

But I would recommend the VirtualHost route; that's the normal way of doing something like this.

2
  • Thanks for the answer but. But I need it on an other way. The user types sub.domain.net and a redirect send the user to www.domain.net/subfolder but in the browser shouldn't change the url. They should see always sub.domain.net on every time they are on the page.
    – Karl Pilz
    Sep 10, 2012 at 11:03
  • In that case, using a virtual host the way I described is the most common way. But I'll add code for doing it with a rewrite instead.
    – Jenny D
    Sep 10, 2012 at 12:10
1

You just need to create a .htaccess in the /sub directory of www.domain.net/sub with the next contents:

RewriteEngine on
RewriteRule ^(.*)$ http://sub.domain.net/$1 [R=301]
3
  • Hi, thanks for your answer but it doesn't work.
    – Karl Pilz
    Sep 10, 2012 at 9:48
  • I have a subdomain sub.domain.net which is redirected to a subfolder. www.domain.net/subfolder. The browser tells that it's not possible why he redirects always. I only need to rewrite the browser url. No redirect.
    – Karl Pilz
    Sep 10, 2012 at 9:50
0

@Jenny D is correct that you need a virtual host answering to sub.domain.net before you start this, and also that the browser does need to be redirected - there's no other way to change what appears in the browser's address bar.

The redirect you need, however, does not require mod_rewrite. Visit the "When Not to Use Rewrite" wiki page and you'll find the much lighter and simpler method:

Redirect sub/ http://sub.domain.net/

Not the answer you're looking for? Browse other questions tagged .