2017-03-31 120 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 –

相关问题