2012-10-22 74 views
2

我使用Virtualmin API创建了一系列使用php的第三级域(直到这里都是正确的)。我需要一个解决方案来为这些子域中的每个子域提供相应的子目录,即
sub1.domain.com进入C:\ xampp \ htdocs \ domain_com \ subsites \ sub1;
sub2.domain.com => C:\ xampp \ htdocs \ domain_com \ subsites \ sub2。
我也应该使用Virtualmin API来做到这一点,但是用户可以看到他被重定向到的子目录,而且很糟糕。应该在子目录中将子域转换为httpd.conf中的常规解决方案,以不修改和重新启动Apache连续性。与此同时,向用户显示的URL必须保持为“sub1.domain.com/whatever_dir/user_file.php”。 我试着像这些的重写规则,以获得它:第三级域名

<VirtualHost *:80> 
    ServerName www.domain.com 
    ServeAlias *.domain.com 
    DocumentRoot C:/xampp/htdoc/domain_com/ 
    Option +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.domain.com 
    RewriteCond %{HTTP_HOST} ^(w*).domain.com 
    RewriteRule ^$ subsites/%1%{REQUEST_URI} 
</VirtualHost> 

有了这个规则我succeded来调用“%1”目录中的所有文件。但是,如果这些文件中的任何一个调用图片或任何其他资源,则此资源的路径始终指文档根,而不是调用文件。所以该文件被正确调用,但具有错误的资源路径!

对于Alias,AliasMatch也是如此。我开始意识到Alias和RewriteRules不是实现这个目标的正确手段,但我不知道其他的。

感谢您的关注。我希望有人有一个建议。 Emanuele。

回答

0

我很随便地修复了自己的问题。 RewriteRule具有在其他地方重定向请求的效果。每次它这样做时,Apache都会为其新设备重新启动,并导致内部服务器错误! - 对不起,我不知道如何使用这个博客。这是修复。

<VirtualHost :80> 
    ServerName www.domain.it 
    ServerAlias *.domain.it 
    DocumentRoot "C:/xampp/htdocs/domain_com" 
    <Directory "C:/xampp/htdocs/domain_com"> 
    Options FollowSymlinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www. 
    RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([0-9A-Za-z_-]+).domain.com(.*/?)([0-9A-Za-z-_.?&=%])$ 
    RewriteRule !^siti siti/%1/%2%3 
    </Directory> 

这样首先规则加前缀“西蒂/”请求,并whatother需要我。当Apache再次转向路径时,它会匹配新的不是“!”,以“siti”开始“^”,并停止它。事实上,它功能完美。