我希望对我的网站的所有访问权限都被强制为HTTPS(https://support.google.com/webmasters/answer/6073543?hl=en)。
我还想强制规范的www网址访问(https://www.yes-www.org/why-use-www/)
我尝试使用重定向指令https://wiki.apache.org/httpd/RedirectSSL和https://httpd.apache.org/docs/2.4/rewrite/remapping.html#canonicalhost
根据Apache建议这样做我有一个有效的let-encrypt证书,它同时包含www和裸域。
我已配置*:80和*:443 VirtualHost重定向。 /etc/httpd/conf.d/www.example.com.conf:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
Redirect permanent / https://www.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
DocumentRoot "/var/www/html/www.example.com"
</VirtualHost>
<Directory "/var/www/html/www.example.com">
Order allow,deny
Allow from all
</Directory>
如果我指定基本URL(example.com,www.example.com,https://example.com等),一切正常。但是,如果我在裸HTTPS请求中指定页面,重定向会吃根斜杠(https://example.com/index.html变为https://www.example.comindex.html)。
答案 0 :(得分:0)
对于所有非ssl到ssl -
,我执行以下操作<VirtualHost *:80>
ServerName example.org
ServerAlias www.example.org
RewriteEngine on
RewriteRule ^/(.*)$ https://www.example.org/$1 [R,L]
</VirtualHost>
仅{}重定向到https://example.org
www.example.org
应该做同样的事情。
<VirtualHost your.ip.add.ress:443>
ServerName example.org
RewriteEngine on
RewriteRule ^/(.*)$ https://www.example.org/$1 [R,L]
*snip*
Normal SSL certificate/key stuff goes here
*snip*
</VirtualHost>
答案 1 :(得分:0)
RedirectMatch似乎解决了类似于ivanivan建议的Rewrite的问题。将*:443 VHost部分中的重定向行更改为以下似乎可以解决问题:
RedirectMatch permanent ^/?(.*) https://www.example.com/$1
我仍然不明白为什么简单的重定向不适用于HTTPS。
另外,https://salferrarello.com/chrome-clear-redirect-cache/在测试期间禁用Chrome中的重定向缓存非常有用。