簡體   English   中英

如何使用htaccess將www和非www重定向到特定域的https

[英]how to redirect www and non www to https for specific domain using htaccess

我需要將www和非www重定向到https。 我已經在stackoverflow上到處尋找,但找不到我正在尋找的東西。

規則是:

  • example.com和www.example.com以及https://example.com必須重定向到https://www.example.com
  • 必須與域和擴展example.com匹配。 不能是一張外卡,它也匹配abc.com或123.com或example.net或其他任何東西
  • 必須僅匹配www子域。 不能是與sub.example.com或thisisademo.example.com匹配的外卡

我目前有:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

但是,如果有人進入www.example.com,它仍會轉到http版本而不是https。

我認為我真正需要的是RewriteCond正則表達式以完全匹配,只有“example.com”和“www.example.com”

謝謝

您可以使用以下規則在一次重定向中將非www或www重定向到https:// www

#redirect http non-www to https://www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
#redirect https non-www to www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

在測試此規則之前清除瀏覽器的緩存。

這是它對我%{ENV:HTTPS}的唯一方式 - 使用!on而不是off%{ENV:HTTPS}而不是%{HTTPS}

  #non-www. http to www. https
  RewriteCond %{ENV:HTTPS} !on
  RewriteCond %{HTTP_HOST} ^(www\.)?yourdomain\.com$
  RewriteRule (.*) https://www.yourdomain.com/$1 [R=301,L]

  #non-www. https to www. https
  RewriteCond %{ENV:HTTPS} on
  RewriteCond %{HTTP_HOST} ^yourdomain\.com$
  RewriteRule (.*) https://www.yourdomain.com/$1 [R=301,L]
#First rewrite any request to the wrong domain to use the correct one (i.e. www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM