聪明的人,
我正在努力完成以下内容:
redirect这些:
http://www.veluwsvuurbarneveld.nl http://veluwsvuurbarneveld.nl https://www.veluwsvuurbarneveld.nl
至
https://veluwsvuurbarneveld.nl
目标是将所有相关的URL发送到非www的SSL地址。
这是mij apache2 config中的代码(指向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被正确地重新路由,但是两个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
请注意,我想解决这个问题使用apache2configuration文件, 而不是通过mod_rewrite ( httpd.apache.org/docs/trunk/rewrite/avoid.html )
有任何想法吗?
这应该工作:
<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>
谢谢你回答我的问题。 使用(RDA)代码为apache2configuration文件后,问题仍然存在。 原来你的代码是完全正确的,但是问题出在我的DNSlogging上。
我忘了将DNSlogging添加到www。 与我的提供商(数字海洋)的域名。 要使上述代码正常工作,首先需要将www和非www请求定向到我的服务器。 添加www.veluwsvuurbarneveld.nl的DNSlogging后,问题就解决了。
我的错!