如何使用PHP中特定的.htaccess和mod_rewrite页面强制使用SSL/https.
我想将所有none-https请求重定向到https除了对子域的请求.例如
http://example.com/ => https://example.com/
http://example.com/page => https://example.com/page
Run Code Online (Sandbox Code Playgroud)
但
http://m.example.com/ REMAINS http://m.example.com/
Run Code Online (Sandbox Code Playgroud)
这就是我的.htaccess中的内容,它重定向所有请求(包括子代码):
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
我知道我必须在RewriteRule之前添加一个条件,但我对语法不太确定.
我一直在尝试为我的网站配置这个,但是无法做到.
我用我的.htaccess上有一个cond强制主域名的www和子域名没有任何东西,但是因为我有一个SSL,我遇到了一些问题.
这是一个通配符SSL.
我需要的是在主域上强制HTTPS:// WWW,在子域上强制使用HTTPS://.
IE:http://www.domain.com - > https://subdomain.domain.com
对此有什么规定吗?谢谢!
EDITED
现在我像Jon一样使用了
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^domain\.com\.br$ [NC]
RewriteRule ^.*$ https://www.domain.com.br%{REQUEST_URI} [R,L]
# ---------- #
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com\.br$ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.|)(.*)$ [NC]
RewriteRule ^.*$ https://%1%{REQUEST_URI} [R,L]
Run Code Online (Sandbox Code Playgroud)
问题是,当我在主域上输入HTTP://有或没有WWW时,ir强制HTTPS://和WWW,这没关系......
但是在子域名中,当我键入HTTP时,它不会强制HTTPS,它只会重定向到主域...如果我将.htaccess放在子域的目录中,则不会发生这种情况.在我的子域dir中有.htaccess,如果我键入HTTP,它会强制HTTPS正常...
有什么建议?