2015-06-30 249 views
1

我有一個網站sub.example.com設置了Apache在端口80和443 virtualhosts(見下文CONFIGS)。實際上這些是服務器上唯一的2個虛擬主機。子域名重定向到主域,而無需虛擬主機

然而,當我瀏覽到sub.example.com,瀏覽器重定向到example.com,甚至找到正確的文檔根目錄和渲染的sub.example.come,然後在其中獲得一個SSL錯誤,因爲我只有一個證書sub.example.com登錄頁面。

我想的第一件事就是重定向example.comsub.example.com。我第一次嘗試與該重寫指令的.htaccess,它似乎沒有任何效果。然後我嘗試設置在Apache的配置文件永久重定向,但是這導致重定向循環。

sub.example.com怎樣才能重定向到example.com,此外,example.com怎麼可能找到文檔根目錄呢?

理想情況下,example.com根本不應該存在,但我會滿意它至少重定向example.comsub.example.com

這裏是我的Apache配置。 (使用Ubuntu 12.04和Apache 2.2)

ports.conf

NameVirtualHost xx.xx.xx.xx:80 
NameVirtualHost xx.xx.xx.xx:443 

Listen 80 

<IfModule mod_ssl.c> 
    Listen 443 
</IfModule> 

<IfModule mod_gnutls.c> 
    Listen 443 
</IfModule> 

virtualhosts配置

# redirect to https 
<VirtualHost xx.xx.xx.xx:80> 
    ServerName sub.example.com 
    DocumentRoot /var/www/path/to/webroot 
    RedirectPermanent/https://sub.example.com 
</VirtualHost> 

# https 
<VirtualHost xx.xx.xx.xx:443> 
    ServerName sub.example.com 

    DocumentRoot /var/www/path/to/webroot 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 

    <Directory /var/www/path/to/webroot> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

    SSLEngine on 
    SSLCertificateFile /etc/apache2/ssl/sub.example.com.crt 
    SSLCertificateKeyFile /etc/apache2/ssl/sub.example.com.key 
    SSLCertificateChainFile /etc/apache2/ssl/chain.crt 

    LogLevel notice 
    ErrorLog ${APACHE_LOG_DIR}/sub-example-error.log 
    CustomLog ${APACHE_LOG_DIR}/sub-example-access.log combined 
</VirtualHost> 

回答

-1

你已經把

ServerName sub.example.com 

兩次