我有一个域名:example.com和一个名为sub.example.com
的子域名我想将example.com的所有主域请求强制为https://除了1个文件夹。例如:
http://www.example.com/ <-- Redirect all requests to https://
http://www.example.com/folder/ <-- Force to http:// not https://
我还想强制sub.example.com的所有子域请求为https://,但1个文件夹除外。例如:
http://sub.example.com <-- Redirect all requests to https://
http://www.example.com/folder/ <-- Force to http:// not https://
目前example.com工作正常并强制为https://为主域名,文件夹未重定向到https://但文件夹未强制执行http://如果有人选择https:// < / p>
如果我访问http://sub.example.com
,则不会强制执行https://如果我手动访问https://sub.example.com
,则会在网址中显示。但是,它显示的网站实际上来自https://www.example.com
我对example.com的htaccess文件是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteCond %{HTTP_HOST} !^sub.example.com$ [NC]
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,QSA,L]
</IfModule>
我对sub.example.com的htaccess文件是:
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/folder/
RewriteCond %{HTTP_HOST} ^example\.com\.au$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:0)
我发现了这个问题。它与htaccess文件无关。我发现我的证书已安装到主域,而子域没有匹配的证书。
Apache正在重定向到ssl证书域而不是子域。我通过购买外卡ssl,将其安装到主域,然后将其单独安装到子域中解决了这个问题。
这解决了问题。