.htaccess - 强制所有域 https 和 www

标签 .htaccess ssl https

我在这个论坛上尝试了 12 种不同的解决方案,但没有一种可行。 我希望我所有的域都有 https://www .

现在我正在使用这个:

 RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}

但现在当我访问 www.example.com 时,它会重定向到 https://www.www.example.com (两次 www.)

http://example.com工作完美它重定向到https://www.example.com

最佳答案

这是正常行为。
实际上,在进行重定向之前,您需要检查 www 是否在主机中。

一个简单的方法是将问题分为两种情况

RewriteEngine on

# redirect http://www.example.com to https://www.example.com
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# redirect http(s)://example.com to https://www.example.com
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

关于.htaccess - 强制所有域 https 和 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35537527/

相关文章:

spring-boot - 如何在使用带有自签名证书的 Spring RestTemplate 时修复 "SSLHandshakeException"

javascript - 导航的事件类

php - Opencart 3 .x SEO Url 不适用于 route=information/contact, route=account/login

php - 使用 .htaccess 删除 .html 或 .PHP URL 扩展名不起作用

.htaccess - 为一页禁用 SSL

https - 使用 HTTPS 在 Apache 后面配置 Tomcat8

javascript - 清除服务器端chrome的缓存

.net - 确定 SSL 证书到期日期 IIS

ssl - 使用 certbot 安装 Glassfish ssl

.htaccess - 使用 .htaccess 控制某些页面上的 HTTPS