http://sub.site.com错误地重定向到http://www.sub.site.com而不是https://sub.site.com
问题描述:
在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>
我不没有看到任何可能导致错误的文件。有没有人有什么建议?
感谢
答
至少我可以告诉你,你得到的代码301(=永久)重定向。通常只有当你告诉Apache这样做时才是这种情况。我不完全确定%{SERVER_NAME}填满了什么,但您的重写是“永久”的。我试试这个:
RewriteCond %{HTTPS} !=on
RewriteRule .? https://blog.ryangiglio.com%{REQUEST_URI} [END,QSA,R=301]
R = 301和R =永久是相同的,参数的顺序并不重要。
第一个似乎仍然重定向到www.blog.ryangiglio.com。第二个是根本不执行重定向,只是显示文档根目录。 –
1)所以'服务器名称'似乎包括'www。' 2)blog.ryangiglio.com只能使用初始请求所具有的相同URI重新编译为https://blog.ryangiglio.com。认为这是你的要求... 最终你可以详细说明你想要调用什么,你的预期结果是什么,你取而代之。 –
1)你能想到SERVER_NAME会包含www的原因吗? 2)对不起,如果我不清楚 - 你给它的第二个选择是停留在http和显示网站,而不是发送到https –