2010-06-28 71 views
3

有没有办法使位于不同于DocumentRoot路径的文件的重写规则?说我有域http://test.ldt/与DocumentRoot /home/test_ltd/,我想当一个文件被请求在静态。子域(http://stats.test.ldt/)它会查找从另一个路径请求的文件,说/ home/static_files/httpd重写规则与不同的DocumentRoot目录

我被建议使用mod_alias。但是,我不确定如何在需要子域名时使其工作。

to cristis:

你是不对的。例如,如果这些将是我的httpd的规则:

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 

和客户端将请求static2.domain.ltd/foo.txt,该文件将在/ home搜索/ domain_ltd /家庭/ static_files/$ 1

+0

你有访问'httpd.conf',还是仅限于使用'.htaccess'文件? – 2010-06-28 20:21:37

+0

我有权访问httpd.conf – Gajus 2010-06-28 20:29:34

回答

1

对我来说,它将使最有意义的只是定义子域作为一个VirtualHost具有DocumentRoot指向,你想它(虽然我们“再移动到ServerFault领土这里技术上,我猜...)

如:

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

但是你凑如果您愿意,也可以使用mod_aliasmod_rewrite的组合。事情是这样的应该工作...

httpd.conf

Alias /static /home/static_files 

.htaccess(或最好在httpd.confDirectory/home/domain_tld):

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^static 
RewriteRule ^!static - [C] 
RewriteRule ^(.*)$ static/$1 [PT] 
+0

这对我没有任何作用。嗯。这对我来说似乎很好。也许只是RR应该是/静态/但其他一切都应该没问题。不知道,不行。 – Gajus 2010-06-28 21:59:04

+0

没有重写规则,如果你去了子域,你可以访问'/ home/domain_tld'中的内容没问题,对吧?另外,你的服务器日志对你做出的测试失败请求有什么看法? – 2010-06-28 22:09:18