我将网站重定向到非www时遇到问题。我实际上在我的RPi上有NextCloudPlus,但我想用我的RPI来托管其他一些简单的网站。 几乎所有人看起来都很好,但当我输入http://www.example.com时,我会重定向到https://www.example.com而非非www。
curl -I http://www.example.com
HTTP/1.1 302 Found
Date: Fri, 08 Jun 2018 11:04:05 GMT
Server: Apache
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload
Location: https://www.example.com/
Content-Type: text/html; charset=iso-8859-1
/sites-enabled/000-default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/nextcloud
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/examplecom
ServerName examplecom
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
</IfModule>
</VirtualHost>
/sites-enabled/examplecom.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/examplecom/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/examplecom/privkey.pem
</VirtualHost>
</IfModule>
我做错了什么?
答案 0 :(得分:0)
如果你要求http://www.example.com
,那么Apache会抓住它来转到默认的VirtualHost,因为它位于端口80上。在那里你重定向到https://%{SERVER_NAME}
,这里SERVER_NAME == www。 example.com。删除默认的VirtualHost,你会没事的。
此外,ServerName应该是您期望VirtualHost的域名。我会说:
ServerName example.com
ServerAlias www.example.com