我正在尝试在域上强制使用 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
相同.希望这可以清除结构。
最佳答案
每当向确切域 mydomain.com
发出请求时,就会发生重定向。 (这就是 RewriteCond 正在测试的内容)。它不适用于任何其他域,也不会检测 HTTPS。改用这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L]
关于.htaccess 强制使用 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040607/