Php 使用htaccess将所有子域从HTTP重定向到HTTPS
我有域名和它的工作与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
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文件)都没有为我重定向。我在下面添加了我的解决方案。