htaccess虚拟主机无法正常工作

时间:2012-06-08 06:18:32

标签: .htaccess php

我有一台配置了许多虚拟主机的本地dev Debx64计算机。 主URL设置为

<VirtualHost *:80>
ServerAdmin webmaster@blah.com
ServerName blah.com 
ServerAlias blah.com 
DocumentRoot /home/blah/v1.blah.com 
<Directory /home/blah/v1.blah.com/>
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>
AccessFileName .htaccess  
ErrorLog /home/blah/blah_logs/v1.blah.com.in-error_log
CustomLog /home/blah/blah_logs/v1.blah.com.in-access_log common 
</VirtualHost>

并重定向到主要操作VH

<VirtualHost *:80>
 ServerAdmin webmaster@blah.com
 ServerName v1.blah.com 
 ServerAlias v1.blah.com 
 DocumentRoot /home/blah/v1.blah.com 
<Directory /home/blah/v1.blah.com/>
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>
AccessFileName .htaccess  
ErrorLog /home/blah/blah_logs/v1.blah.com.in-error_log
 CustomLog /home/blah/blah_logs/v1.blah.com.in-access_log common 
</VirtualHost>

我在v1.blah.com上设置.htaccess来解析.html为.php

Options +ExecCGI

AddHandler php-fcgi .php .html 
Action php-cgi /home/php5-fcgi
<FilesMatch "^php5?\.(ini|cgi)$">
    Order Deny,Allow
    Deny from All
    Allow from env=REDIRECT_STATUS
</FilesMatch>

如果我将URL作为v1.blah.com访问,这可以正常工作,但是如果我以blah.com的身份访问它,则不会调用.htaccess并且正常提供.html。

我错过了什么? php.ini中有什么东西需要更改吗?

1 个答案:

答案 0 :(得分:5)

为什么您需要为主机分配两个单独的条目?看到他们都使用相同的日志文件和DocumentRoot,你不能将blah.com添加到ServerAlias列表中吗?

所以你最终会得到以下配置:

<VirtualHost *:80>
ServerAdmin webmaster@blah.com
ServerName v1.blah.com
ServerAlias v1.blah.com blah.com 
DocumentRoot /home/blah/v1.blah.com 
<Directory /home/blah/v1.blah.com/>
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>
AccessFileName .htaccess  
ErrorLog /home/blah/blah_logs/v1.blah.com.in-error_log
CustomLog /home/blah/blah_logs/v1.blah.com.in-access_log common 
</VirtualHost>