将.htaccess用于子域强制SSL和WWW

时间:2018-11-08 19:09:48

标签: .htaccess ssl https

我已经在安装了ssl cirtificate的子域beta.mydomain.com上托管了opencart网站。

我要强制使用https和www。有人输入beta.example.com时应将他们带到https://www.beta.example.com

我很讨厌.htaccess条目

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

我不明白这里出了什么问题。预先感谢。

3 个答案:

答案 0 :(得分:1)

好吧,您在示例中使用的域不是beta.example.com,而是example.com,您应该将其更改为所需的域。像这样:

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

您将RewriteBase用于什么?

我个人喜欢使用以下过程:

  1. 重定向到www
  2. 重定向到https

类似的东西:

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

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

如果您尚未检查它,this GitHub Repository上有一些有关.htaccess的有用信息。

答案 1 :(得分:0)

最简单的方法是在主目录中更新config.php文件。

我面前没有它,但是您想将HTTP和HTTPS URL更改为“ https://www.beta.example.com”。

答案 2 :(得分:0)

用于htaccess

RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://www.yoursite.com%{REQUEST_URI} [NS,R,L]

备用htaccess代码

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

用于php重定向 打开index.php文件 找到

<?php

在之后添加

    if (substr($_SERVER['HTTP_HOST'], 0, 4) === 'www.') {
 header('Location: http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 's':'').'://' . substr($_SERVER['HTTP_HOST'], 4).$_SERVER['REQUEST_URI']);
 exit;
}