htaccess将http重定向到https保留子域名

时间:2018-08-09 00:12:42

标签: .htaccess

我一直在尝试使用htaccess,并访问了许多网站,但没有运气。

如果用户输入以下内容,我需要以下帮助:

  1. testingsite.com-> https://www.testingsite.com
  2. http //:testingsite.com-> https://www.testingsite.com
  3. http //:sub.testingsite.com-> https://sub.testingsite.com

RewriteEngine On

#Force www:
RewriteCond %{HTTPS}s ^on(s)|
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

RewriteBase /

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在.htaccess中使用它:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这将检查URL是否具有:

  1. 已启用SSL(HTTPs)
  2. 如果没有www

如果两个匹配,它将强制HTTP和www到URL上。我使用R=301重定向设置了此设置,这是永久性的。出于测试目的,我建议您将其更改为R=302,因为这是临时的。

在测试之前,请确保清除缓存