如何使用子域将 HTTP 重新连接到 HTTPS?

How do I reconnect HTTP to HTTPS with subdomain?

我有以下 HTTP 地址:

http://www.example.com/

但是我的 HTTPS 地址有一个子域,没有 www,像这样:

https://secure.example.com/

我尝试了以下规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://secure.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

将我发送至:

https://secure.www.example.com/

在这种情况下如何强制使用 HTTPS?因为我需要删除 www。


编辑: 我在 'fancy urls' 上面有这些规则,因为我将 WordPress 用作 CMS:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://secure.example.com/ [L,R=301]
</IfModule>

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

两条规则都是这样做的:任何非 https 请求都被重定向到 https://secure.example.com,同时保留整个 url

这应该是您完整的 htaccess :

RewriteEngine On
RewriteBase /
#1--Redirect "http://domain to "https://secure"
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://secure.domain.com%{REQUEST_URI} [L,R=301]

#2--wp rules--#
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]