.htaccess 通过htaccess强制非www和https

.htaccess 通过htaccess强制非www和https,.htaccess,mod-rewrite,https,no-www,.htaccess,Mod Rewrite,Https,No Www,我试图强制用户重定向到非www网站,并强制https 我有这方面的工作,但在输入http时不强制https RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://site.com\.net/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www\. RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 你知道我做错了什么吗?试试这

我试图强制用户重定向到非www网站,并强制https

我有这方面的工作,但在输入http时不强制https

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://site.com\.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
你知道我做错了什么吗?

试试这个规则:

RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

根据Gumbo的评论:“TLS/SSL连接已建立,证书已验证,然后再将其传递给HTTP并进行HTTP重定向” 我尝试了一下(似乎有效):


请告诉我这种方法是否有问题。

唯一适用于我的规则是

# match any URL with www and rewrite it to https without the www
    RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
    RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]

# match non https and redirect to https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

顺序很重要,在某些情况下它会阻止第三次重定向。

我尝试访问时从浏览器中收到旧的“Connected is untrusted”(连接不受信任)消息:
https://www.mydomainname.co.uk
使用上述已接受答案中的htaccess<代码>http://mydomainname.co.uk和
http://www.mydomainname.co.uk
两个重定向都很好。我的证书是为
mydomainname.co.uk
生成的。有什么想法吗(或者你需要更多的信息)?@Jon:TLS/SSL层位于HTTP之上(HTTPS也称为“HTTP over TLS/SSL”)。因此,在将TLS/SSL连接传递给HTTP并进行HTTP重定向之前,将建立TLS/SSL连接并验证证书。您无法修复此问题。感谢更新,只是为了确认-没有解决方法?(到底是什么,还是你知道的?@Jon:不,我知道没有解决这个问题的方法。这会为我产生一个重定向循环。我找到了这个答案:
# match any URL with www and rewrite it to https without the www
    RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
    RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]

# match non https and redirect to https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]