views:

35

answers:

2

Is there a way to make a rewrite rule to file located in a different than DocumentRoot path? Say I have domain http://test.ldt/ with DocumentRoot */home/test_ltd/* and I want that when a file is requested under static. subdomain (http://stats.test.ldt/) it would look for requested file from another path, say /home/static_files/

I was advised to use mod_alias. However, I am not sure how to make it work when I need it with subdomain.

to cristis:

You are not right. For example if these would be mine httpd rules:

ServerName domain.ltd
ServerAlias www.domain.ltd

DocumentRoot /home/domain_ltd

RewriteEngine on

RewriteCond %{HTTP_HOST} static2.domain.ltd
RewriteRule (.*)$ /home/static_files/$1 [L]

DirectoryIndex index.html index.htm index.php

And client would request for static2.domain.ltd/foo.txt, the file would be searched in /home/domain_ltd/home/static_files/$1

A: 

You can include the full path in the RewriteRule statement. For instance:

RewriteEngine on
RewriteRule   ^/~(([a-z])[a-z0-9]+)(.*)  /home/$2/$1/.www$3

(taken from http://httpd.apache.org/docs/2.0/misc/rewriteguide.html)

cristis
Can't be read in comments section; moved to original post under "to cristis:"
Guy
A: 

To me, it would make the most sense to just define the subdomain as a VirtualHost that has a DocumentRoot that points where you wanted it to (Although we're moving into ServerFault territory here technically, I guess...)

e.g.:

<VirtualHost *:80>
    ServerName static.domain.tld

    DocumentRoot /home/static_files/

    <Directory /home/static_files>
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

But you could do it with a combination of mod_alias and mod_rewrite too, if you wanted. Something like this should work...

In httpd.conf:

Alias /static /home/static_files

In .htaccess (or preferably in httpd.conf in the Directory section for /home/domain_tld):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^static
RewriteRule ^!static - [C]
RewriteRule ^(.*)$ static/$1 [PT]
Tim Stone
That did't work for me. Hm. It seems to be fine for me. Maybe just the RR should be /static/ but everything else should be fine. Don't know, doesn't work.
Guy
Without the rewrite rules, if you go to the subdomain you can access content in `/home/domain_tld` no problem, right? Also, what do your server logs say about the request you made to test that failed?
Tim Stone