使用htaccess将所有子域从HTTP重定向到HTTPS

时间:2016-11-08 10:18:06

标签: php .htaccess

我有域名,并且使用https,例如

http://example.com/

现在我正在创建子域名,如demo1.example.com,demo2.example.com等。

我需要所有子域名必须仅通过https重定向和访问。

我已经在我的.htaccess中编写了代码,如下所示,但是当我访问子域时,它总是重定向到主域。

我的htaccess代码是

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

修改

我的主网站位于root,所有其他子域代码都位于其中一个文件夹中。因此,无论何时创建任何仅指向该文件夹的子域。

2 个答案:

答案 0 :(得分:0)

以下内容对我有用。注意:如果您的子域具有自己的.htaccess文件(例如,您的子域中的WordPress网站),则除了主域名.htaccess外,您还必须编辑该.htaccess文件。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.domian\.com$
RewriteRule ^https://%1.domain.com%{REQUEST_URI} [NE,L,R]

您可以在此之上或之下添加其他重写条件,具体取决于您希望它们执行的时间。例如,可以通过https'force'放置Reghbendra Nayak的“ Handle Front Controller ...”代码,它将执行。

答案 1 :(得分:-2)

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yourdomain.com/$1 [R=301,L]