我有一個網站sub.example.com
設置了Apache在端口80和443 virtualhosts(見下文CONFIGS)。實際上這些是服務器上唯一的2個虛擬主機。子域名重定向到主域,而無需虛擬主機
然而,當我瀏覽到sub.example.com
,瀏覽器重定向到example.com
,甚至找到正確的文檔根目錄和渲染的sub.example.come
,然後在其中獲得一個SSL錯誤,因爲我只有一個證書sub.example.com
登錄頁面。
我想的第一件事就是重定向example.com
回sub.example.com
。我第一次嘗試與該重寫指令的.htaccess,它似乎沒有任何效果。然後我嘗試設置在Apache的配置文件永久重定向,但是這導致重定向循環。
sub.example.com
怎樣才能重定向到example.com
,此外,example.com
怎麼可能找到文檔根目錄呢?
理想情況下,example.com
根本不應該存在,但我會滿意它至少重定向example.com
到sub.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>