Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用htaccess将所有子域从HTTP重定向到HTTPS_Php_.htaccess - Fatal编程技术网

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

Php 使用htaccess将所有子域从HTTP重定向到HTTPS,php,.htaccess,Php,.htaccess,我有域名和它的工作与https为例 http://example.com/ 现在我正在创建一些子域,比如demo1.example.com、demo2.example.com等等 我需要所有子域必须重定向和访问只有https 我已经在我的.htaccess中编写了代码,请参见下文,但当我访问我的子域时,它总是重定向到主域 我的密码是 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Opt

我有域名和它的工作与https为例

http://example.com/
现在我正在创建一些子域,比如demo1.example.com、demo2.example.com等等

我需要所有子域必须重定向和访问只有https

我已经在我的.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>

选项-多视图
重新启动发动机
重写条件%{HTTPS}关闭
重写规则^(.*)$https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
编辑


我在根目录中有主网站,在其中一个文件夹中有所有其他子域代码。因此,无论何时创建的任何子域都将只指向该文件夹

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

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

您可以在上面或下面添加其他重写条件,具体取决于您希望何时执行这些条件。例如,Reghbendra Nayak的“Handle Front Controller…”代码可以放置在https的“force”中,它将执行。

尝试清除浏览器缓存?我做了多次。。。但是运气不好。我猜:HTTP_主机不包含您认为它的功能,因为您的子域的设置方式。@CBroe我们如何获得子域,我已经尝试了,但没有工作。您在子域的
DocumentRoot
中有单独的.htaccess吗?因为它没有回答问题。@MuhammedImranHussain,你的解决方案对我不起作用。所有子域(没有自己的.htaccess文件)都没有为我重定向。我在下面添加了我的解决方案。