1

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.

splattne
  • 28,508
  • 20
  • 98
  • 148
Deepak Mittal
  • 4,153
  • 3
  • 17
  • 7
  • 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 Answers4

3

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]
Jeff Snider
  • 3,272
  • 18
  • 17
1

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
rytis
  • 2,382
  • 1
  • 18
  • 13
1

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.

touchstone
  • 316
  • 1
  • 4
0

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

DocumentRoot /var/www/domainName.com
Christian
  • 4,703
  • 2
  • 24
  • 27