Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to rewrite my URL's subdomain. will show content of but URL stay as . (I mean url masking)

(Username's can contain a-z 0-9 and hypens) Also if subdomain is www or api, don't redirect them

I'm using this for my .htaccess

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule .* /user.php?u=%1 [L]

(After @mfarver's advice) I'm trying this

RewriteEngine on
RewriteRule .* /user.php?u=%1 [L]

but this time getting 500 Internal Server error:

[Mon May 30 20:10:44 2011] [alert] [client] /home/blablabla/public_html/.htaccess: AllowOverride not allowed here

(from error log)

My server's httpd.conf file's virtualhost settings

    <IfModule mod_userdir.c>
        UserDir disabled
        UserDir enabled USERNAME
    <IfModule concurrent_php.c>
        php4_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
        php5_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/local/lib/php:/tmp"
    <IfModule !concurrent_php.c>
        <IfModule mod_php4.c>
            php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
        <IfModule mod_php5.c>
            php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/local/lib/php:/tmp"
        <IfModule sapi_apache2.c>
            php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
    ServerAlias *
<Directory "/home/USERNAME/public_html">
    Options FollowSymLinks
    Allow from all
    AllowOverride All
    DocumentRoot /home/USERNAME/public_html
    UseCanonicalName Off
    CustomLog /usr/local/apache/domlogs/ combined
    CustomLog /usr/local/apache/domlogs/ "%{%s}t %I .\n%{%s}t %O ."
    ## User USERNAME # Needed for Cpanel::ApacheConf
    <IfModule mod_suphp.c>
    <IfModule !mod_disable_suexec.c>
        SuexecUserGroup USERNAME USERNAME
    ScriptAlias /cgi-bin/ /home/USERNAME/public_html/cgi-bin/

    # To customize this VirtualHost use an include file at the following location
    # Include "/usr/local/apache/conf/userdata/std/2/USERNAME/*.conf"


Also * added to my DNS ZONES as A record.

share|improve this question

marked as duplicate by Jenny D, mdpc, HBruijn, Hyppy, Dave M Dec 9 '14 at 19:07

This question was marked as an exact duplicate of an existing question.

Looks good but debugging mod_rewrite is always tricky. I would recommend breaking it down. Comment out all of the conditions and make sure the rule works first, then add them back one at a time. In my experience mod_rewrite behaves slightly different in .htaccess vs in the conf files. Also make sure that you are actually using .htaccess (ie overrides are allowed) – mfarver May 30 '11 at 18:05
I'm sure server using .htaccess file. Because when i type random characters to my .htaccess file, i'm getting 500 INTERNET SERVER error. So my .htaccess file is working. I'm not similar with .htaccess commands very well. First i will comment out 2nd 3th and 4th lines right? – Eray May 30 '11 at 18:30
@mfarver, after your advice i'm delete conditions but this time i'm getting error. Please look ADDITION 1 on answer. I was edited it. – Eray May 30 '11 at 18:35
Question improved totally – Eray May 31 '11 at 18:12
You probably forgot to restart httpd after editing httpd.conf – Alvin Wong Sep 2 '12 at 3:48

If you are using a .htaccess file, your server should have AllowOverride direction for these domain contexts. Check you servers general configuration.

Also you need a redirect for thise kind of rewriting.

instead of: RewriteRule .* /user.php?u=%1 [L]

use: RewriteRule .* [r,L]

After your edit: you do not need redirecting.

share|improve this answer
After chatting over this problem on another platform I have concluded this problem is not only about rewriting. Domain names and vhost configuration are not set properly. – fsniper May 30 '11 at 20:50

This should do the job - you need "PT" to stop it from being a redirect. If it isn't a redirect the URL won't change in the browser:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule .* /user.php?u=%1 [PT,L]
share|improve this answer

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