【问题标题】:Forcing SSL & www subdomain for any URI entered with .htaccess?对使用 .htaccess 输入的任何 URI 强制使用 SSL 和 www 子域?
【发布时间】: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 作为示例域(已为您修复)

标签: .htaccess mod-rewrite ssl subdomain


【解决方案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]
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 2018-12-22
  • 2023-03-27
  • 2016-09-25
  • 2013-01-19
  • 2012-07-30
  • 2014-03-31
  • 2017-06-18
相关资源
最近更新 更多