2017-03-31 116 views
0

在Ubuntu 16.04.2上使用Apache 2.4.18http://sub.site.com錯誤地重定向到http://www.sub.site.com而不是https://sub.site.com

我將blog.ryangiglio.com設置爲虛擬主機。我使用letsencrypt certbot爲服務器生成SSL證書,並將其設置爲強制將重定向從http://blog.ryangiglio.com更改爲https://blog.ryangiglio.com。當你直接去https://blog.ryangiglio.com,一切工作正常。但是,如果您改爲使用http://blog.ryangiglio.com,則會重定向到http://www.blog.ryangiglio.com,這不會也不應該存在。

此域的webroot中沒有可導致衝突的.htaccess文件。

這裏是blog.ryangiglio.com.conf配置文件

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName blog.ryangiglio.com 

    DocumentRoot /var/www/blog.ryangiglio.com/public_html 
    ErrorLog /var/www/blog.ryangiglio.com/error.log 
    # CustomLog /var/www/blog.ryangiglio.com/access.log combined 

    <Directory /var/www/blog.ryangiglio.com/public_html/> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    </Directory> 
RewriteEngine on 
RewriteCond %{SERVER_NAME} =blog.ryangiglio.com 
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] 
</VirtualHost> 

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

而且通過certbot產生的blog.ryangiglio.com-LE-的ssl.conf文件

<IfModule mod_ssl.c> 
<VirtualHost *:443> 
    ServerAdmin [email protected] 
    ServerName blog.ryangiglio.com 

    DocumentRoot /var/www/blog.ryangiglio.com/public_html 
    ErrorLog /var/www/blog.ryangiglio.com/error.log 
    # CustomLog /var/www/blog.ryangiglio.com/access.log combined 

    <Directory /var/www/blog.ryangiglio.com/public_html/> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    </Directory> 
SSLCertificateFile /etc/letsencrypt/live/blog.ryangiglio.com/fullchain.pem 
SSLCertificateKeyFile /etc/letsencrypt/live/blog.ryangiglio.com/privkey.pem 
Include /etc/letsencrypt/options-ssl-apache.conf 
</VirtualHost> 

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 
</IfModule> 

我不沒有看到任何可能導致錯誤的文件。有沒有人有什麼建議?

感謝

回答

0

至少我可以告訴你,你得到的代碼301(=永久)重定向。通常只有當你告訴Apache這樣做時纔是這種情況。我不完全確定%{SERVER_NAME}填滿了什麼,但您的重寫是「永久」的。我試試這個:

RewriteCond %{HTTPS} !=on 
RewriteRule .? https://blog.ryangiglio.com%{REQUEST_URI} [END,QSA,R=301] 

R = 301和R =永久是相同的,參數的順序並不重要。

+0

第一個似乎仍然重定向到www.blog.ryangiglio.com。第二個是根本不執行重定向,只是顯示文檔根目錄。 –

+0

1)所以'服務器名稱'似乎包括'www。' 2)blog.ryangiglio.com只能使用初始請求所具有的相同URI重新編譯爲https://blog.ryangiglio.com。認爲這是你的要求... 最終你可以詳細說明你想要調用什麼,你的預期結果是什麼,你取而代之。 –

+0

1)你能想到SERVER_NAME會包含www的原因嗎? 2)對不起,如果我不清楚 - 你給它的第二個選擇是停留在http和顯示網站,而不是發送到https –

相關問題