2009-07-15 63 views
0

我在启用了站点文件夹的多个虚拟主机上运行的Apache2,每个看起来有点像这样:常见重写设置多个虚拟主机

<VirtualHost *:80> 
    ServerName site1.com 
    ServerAlias www.site1.com 

    DocumentRoot /home/sites/site1/www/ 
    <Directory /home/sites/site/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride all 
     Order allow,deny 
     allow from all 
    </Directory> 

    <Directory /home/sites/mainsite/www> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride all 
     Order allow,deny 
     allow from all 
    </Directory> 

    # Provide default favicon.ico and robots.txt using rewrite 
    RewriteOptions Inherit 
    RewriteEngine On 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
    RewriteRule ^/(robots\.txt|favicon\.ico)$ /mainsite_alias$0 [PT,NC,L] 
</VirtualHost> 

的重写代码是共同的所有虚拟主机(提供默认图标.ico/robots.txt),但将这些代码放到httpd.conf中似乎没有任何影响 - 重写日志没有任何显示。

如何在不重复代码的情况下让所有虚拟主机共用此代码?

另外 - 有没有更好的方式来实现默认的图标?

感谢

回答

1

你可以尝试AliasMatch

AliasMatch ^/(robots\.txt|favicon.ico)$ /home/sites/site1/www/mainsite_alias$0 
0

我用这

<VirtualHost *:80> 
    ServerAdmin email_at_isp 
    DocumentRoot "C:/apache/htdocs" 
</VirtualHost> 

<VirtualHost *:80> 
    ServerAdmin admin_at_server_one.com 
    DocumentRoot "C:/apache/htdocs/server_one.com" 
    ServerName server_one.com 
    ErrorLog "logs/server_one.com-error.log" 
    CustomLog "logs/server_one.com-access.log" common 
</VirtualHost> 

,我不断改写脚本的.htaccess在根[C:/阿帕奇/ htdocs] 我希望它有助于某种方式,如果不是很讨厌。大声笑