强制SSL&;www子域中使用.htaccess输入的任何URI?

强制SSL&;www子域中使用.htaccess输入的任何URI?,.htaccess,mod-rewrite,ssl,subdomain,.htaccess,Mod Rewrite,Ssl,Subdomain,我有一个我们称之为example.com的网站的“www”子域的SSL证书 因此,我可以强制使用SSL,但如果用户未在浏览器中输入“www.example.com”,SSL证书将无效 我希望通过在网站根目录下的.htaccess文件中使用mod_重写规则来实现这一点 无论用户输入什么URI(例如example.com、www.example.com、example.com/folder/file.html等),我都希望强制使用HTTPS和www子域,当然保留他们提供的任何URI 我一直在玩弄.h

我有一个我们称之为example.com的网站的“www”子域的SSL证书

因此,我可以强制使用SSL,但如果用户未在浏览器中输入“www.example.com”,SSL证书将无效

我希望通过在网站根目录下的.htaccess文件中使用mod_重写规则来实现这一点

无论用户输入什么URI(例如example.com、www.example.com、example.com/folder/file.html等),我都希望强制使用HTTPS和www子域,当然保留他们提供的任何URI

我一直在玩弄.htaccess文件和一些规则,因为我已经做了一些研究,但我对mod_rewrite或.htaccess没有太多经验。我想我发现SVN修订版几乎对我有效,但不完全有效。这是:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^(.*)$ https://www.example.com/$1 [r=301,nc]
尽量不要对我的文件笑得太厉害;它主要来源于我在网上找到的例子

感谢您的指点!=)

试试这个:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301]

另外:使用example.com作为示例域(为您修复了它)从您的原始域(在RewriteRule行中有%{HTTP_HOST},我看到您已经修复了该行)修改而来。它工作得很好:RewriteRule^{REQUEST_URI}[R=301]