.htaccess强制HTTPS

4

我正在尝试在一个域名上强制使用HTTPS。由于主机结构/设置的原因,必须使用按域名而非端口号的方法进行操作。

我最接近成功的尝试是:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com$
RewriteRule ^.*$ https://www.mydomain.com/$1 [R=301,L]

当我在地址栏中输入“mydomain.com”时,它会自动重定向到“https://mydomain.com”,但是当我输入“www.mydomain.com”时,它不起作用。我认为这是语法问题,因为我对htaccess非常陌生,花了大约4个小时尝试从他人的代码中创建解决方案。
有什么建议吗?
为了使设置更加易于理解:
/public_html/ - 此文件夹中的所有文件都与www.mydomain.com相关 /public_html/subfolder - 这些文件夹包含与mydomain.com相关的文件 /public_html/subdomain - 这些文件夹包含与www.myotherdomain.com相关的文件
我的其他域是mydomain.com的子域,以便在主机上的cpanel上列出。例如:subdomain.mydomain.com与www.myotherdomain.com相同。
希望这能澄清结构。
1个回答

3

当请求精确的域名mydomain.com时,会发生重定向(这就是RewriteCond测试的内容)。它不适用于任何其他域名,也无法检测到HTTPS。请改用以下方法:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L]

我正在使用Bluehost作为我的主机。他们的设置方法是将主站点(我正在尝试使用https的站点)列在“public_html”下。我所有其他的站点都在“public_html”的子文件夹中,并受到“.htaccess”文件的影响,导致所有域名现在都重定向到“mydomain.com”。 - Daniel
@Daniel 我明白了,我会更新我的答案。你的其他站点中有任何一个是mydomain的子域名,还是它们都是不同的域名? - Paul
@Daniel 你只想在 www.mydomain.commydomain.com 上强制使用 HTTPS,是吗? - Paul
正确。我已经更新了原始帖子的布局,以便更清晰明了。干杯。 - Daniel
非常完美。感谢您的时间,真是帮了大忙! - Daniel
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接