web-dev-qa-db-ja.com

Apache2はwwwを非wwwにリダイレクトします(SSLを使用)

賢い人、

私は次のことを達成しようとしています:

これらをリダイレクトします:

http://www.veluwsvuurbarneveld.nl    
http://veluwsvuurbarneveld.nl 
https://www.veluwsvuurbarneveld.nl

https://veluwsvuurbarneveld.nl

目標は、関連するすべてのURLをwww以外のSSLアドレスに送信することです。

これは、mij Apache2構成のコードです(SSLキーを指す行が削除されています)。

<VirtualHost *:443>
     ServerName veluwsvuurbarneveld.nl
     DocumentRoot /var/www/

     SSLEngine on
     SSLCertificateFile /etc/ssl/certs/...
     SSLCertificateKeyFile /etc/ssl/private/...
     SSLCACertificateFile /etc/ssl/certs/...
</VirtualHost>
<VirtualHost *:80>
     ServerName www.veluwsvuurbarneveld.nl
     Redirect permanent / https://veluwsvuurbarneveld.nl/
</VirtualHost>
<VirtualHost *:80>
     ServerName veluwsvuurbarneveld.nl
     Redirect permanent / https://veluwsvuurbarneveld.nl/
</VirtualHost>
<VirtualHost *:443>
     ServerName www.veluwsvuurbarneveld.nl
     Redirect permanent / https://veluwsvuurbarneveld.nl/
</VirtualHost>

<Directory /var/www/>
    Options +ExecCGI
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

結果は http://veluwsvuurbarneveld.nl が正しく再ルーティングされますが、2つのwww。 URLはそうではありません。私の最初の考えは https:// www だということでした。証明書も必要でした。ただし、これは他のwwwを説明するものではありません。機能していません。

私の.htaccessは次のようになります(wordpressによって生成されます):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Apache2ctl -Sからの出力:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server localhost (/etc/Apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost localhost (/etc/Apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost www.veluwsvuurbarneveld.nl (/etc/Apache2/sites-enabled/veluwsvuurbarneveld.nl.conf:10)
         port 80 namevhost veluwsvuurbarneveld.nl (/etc/Apache2/sites-enabled/veluwsvuurbarneveld.nl.conf:14)
*:443                  is a NameVirtualHost
         default server veluwsvuurbarneveld.nl (/etc/Apache2/sites-enabled/veluwsvuurbarneveld.nl.conf:1)
         port 443 namevhost veluwsvuurbarneveld.nl (/etc/Apache2/sites-enabled/veluwsvuurbarneveld.nl.conf:1)
         port 443 namevhost www.veluwsvuurbarneveld.nl (/etc/Apache2/sites-enabled/veluwsvuurbarneveld.nl.conf:18)
ServerRoot: "/etc/Apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/Apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/Apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/Apache2/Apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

この問題は、Apache2設定ファイルを使用して解決したいことに注意してくださいmod_rewritehttpd.Apache.org/docs/trunk/ rewrite/avoid.html

何か案は?

3
Ruben ten Cate

私の質問に答えてくれてありがとう。 (RDAの)コードをApache2構成ファイルに使用した後も、問題は解決しませんでした。コードは完全に正しいことがわかりましたが、問題は私のDNSレコードにありました。

WwwにDNSレコードを追加するのを忘れました。私のプロバイダー(Digital Ocean)のドメイン。上記のコードが機能するには、wwwリクエストとwww以外のリクエストの両方を最初にサーバーに送信する必要があります。 www.veluwsvuurbarneveld.nlのDNSレコードを追加した後、問題は解決しました。

私の間違い!

0
Ruben ten Cate

これはうまくいくはずです:

<VirtualHost *:80>
     ServerName veluwsvuurbarneveld.nl
     ServerAlias www.veluwsvuurbarneveld.nl
     Redirect permanent / https://veluwsvuurbarneveld.nl/
</VirtualHost>
<VirtualHost *:443>
     ServerName www.veluwsvuurbarneveld.nl

     SSLEngine on
     SSLCertificateFile /etc/ssl/certs/...
     SSLCertificateKeyFile /etc/ssl/private/...
     SSLCACertificateFile /etc/ssl/certs/...

     Redirect permanent / https://veluwsvuurbarneveld.nl/
</VirtualHost>
<VirtualHost *:443>
     ServerName veluwsvuurbarneveld.nl
     DocumentRoot /var/www/

     SSLEngine on
     SSLCertificateFile /etc/ssl/certs/...
     SSLCertificateKeyFile /etc/ssl/private/...
     SSLCACertificateFile /etc/ssl/certs/...
</VirtualHost>

<Directory /var/www/>
    Options +ExecCGI
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>
3
rda