在Apache上从www重定向到nonwww

时间:2018-06-08 11:05:53

标签: apache

我将网站重定向到非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>

我做错了什么?

1 个答案:

答案 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