Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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.

share|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

4 Answers 4

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]
share|improve this answer

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
share|improve this answer

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.

share|improve this answer

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

DocumentRoot /var/www/domainName.com
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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