I have written a RewriteRule which works on the basis of HTTP_HOST (www.domainname.com), but I want it to work on the basis of the domain name part only (domainname.com).

To clarify further

The folder structure is /var/www/domainName.com.

When I write this rule in apache conf file

RewriteRule ^/js/(.*) /%{HTTP_HOST}/js/$1 [L]

and access the site using www.mydomain.com -- it tries to find the folder /var/www/www.domainName.com, which does not exist.

So, I need to convert the above-mentioned rule to remove the "www" from the HTTP_HOST.

link|improve this question
I gave an answer based on your rewrite-rule, but I am not sure if rewriting is the right way to go (see pulegium's answer about symlinks). Maybe you could clarify on what you want to achieve? There might be a simpler solution. – touchstone Jan 24 '10 at 13:43
feedback

4 Answers

up vote 2 down vote accepted

I would suggest that you redirect requests rather than make the same site available in two places. Either create a new VirtualHost to redirect traffic:

<VirtualHost *:80>
    ServerName www.domainName.com
    Redirect / http://domainName.com/
</VirtualHost>

Or add a set of rules above your others that will detect the presence of the www. prefix and redirect the user:

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule /(.*) http://%1/$1 [R,L]

If you really want your site on both domain names without any redirection, you can use a RewriteCond to pull out just the domain name, and it will be available to the RewriteRule as %1.

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*) [NC]
RewriteRule ^/js/(.*) /%1/js/$1 [L]
link|improve this answer
feedback

I doubt if you can do that, wouldn't it be easier just to create links to appropriate directories?

ln -s yourdomain.com www.yourdomain.com
link|improve this answer
feedback

Have you tried using %{DOCUMENT_ROOT}?

Also possible, if you have set Servername in your vhost to the same name you use in your directory structure, eg:

<VirtualHost *:80>
  DocumentRoot /var/www/domainame.com
  ServerName domainame.com
  ServerAlias www.domainame.com
</VirtualHost>

Then you can use %{SERVER_NAME} in your rewrite-rule.

link|improve this answer
feedback

as i understand you question, just set your DocumentRoot to the right directory:

DocumentRoot /var/www/domainName.com
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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