对使用 .htaccess 输入的任何 URI 强制使用 SSL 和 www 子域?
Posted
技术标签:
【中文标题】对使用 .htaccess 输入的任何 URI 强制使用 SSL 和 www 子域?【英文标题】:Forcing SSL & www subdomain for any URI entered with .htaccess? 【发布时间】:2010-10-08 21:09:23 【问题描述】:我有一个我们称为 example.com 的网站的“www”子域的 SSL 证书。
因此我可以强制使用 SSL,但如果用户没有在浏览器中输入“www.example.com”,则 SSL 证书将显示为无效。
我希望在网站根目录的 .htaccess 文件中使用 mod_rewrite 规则来完成此操作。
无论用户输入什么 URI,(例如 example.com、www.example.com、https://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]
尽量不要对我的文件笑得太厉害;它主要来自我在网上找到的示例。
任何指针表示赞赏! =)
【问题讨论】:
另外:使用 example.com 作为示例域(已为您修复) 【参考方案1】:试试这个:
RewriteCond %HTTPS !on [OR]
RewriteCond %HTTP_HOST !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%REQUEST_URI [R=301]
【讨论】:
从您的原始文件修改(在 RewriteRule 行中有 %HTTP_HOST,我看到您已经修复了)效果很好:RewriteRule ^ example.com%REQUEST_URI [R=301]以上是关于对使用 .htaccess 输入的任何 URI 强制使用 SSL 和 www 子域?的主要内容,如果未能解决你的问题,请参考以下文章
Apache htaccess:如果 REQUEST_URI 与 cookie 值不匹配,则拒绝