仅为 Drupal 上的首页设置 SSL 重定向?

仅为 Drupal 上的首页设置 SSL 重定向?

我希望访问我的网站的用户在访问时被重定向到 SSL 版本

www.mysite.com

但是当他们访问其他 URL 时,例如......

www.mysite.com/some
www.mysite.com/other
www.mysite.com/links

它将进入正常版本。

这是我到目前为止没有用到的东西:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ https://www.mysite.com/$1 [L,R=301]

所有页面均如此。

答案1

您当前的规则集仅检查HTTP_HOST。要识别对您首页的请求,您需要添加对 的检查REQUEST_URI

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteCond %{REQUEST_URI} ^$ [NC, OR]
RewriteCond %{REQUEST_URI} ^/node$ [NC, OR]
RewriteCond %{REQUEST_URI} ^/yourFrontpageAlias$ [NC]
RewriteRule ^(.*)$ https://www.mysite.com/$1 [L,R=301]

这还将检查标准 Drupal 首页“节点”的请求 URI 是否为空,以及您可能为其指定的别名。这只是一个未经测试的示例。如果您更改了默认首页,则需要用该首页替换“节点”。另外确保测试尾部斜线的情况- 根据您的设置,您还需要允许匹配这些。

您可能还应该添加检查HTTPS 服务器变量如果请求已经是 https,则跳过该规则。它将相应地包含“on”或“off”。

如果您想强制其他页面显式地使用非 SSL,则需要为所有其他情况添加重定向到非 SSL 的规则。

除了上面链接的标准 mod_rewrite 文档页面之外,你可能需要查看以下示例/说明:URL 重写指南


还要注意,根据您的设置,您可能HTTP_HOST根本不需要/不想检查,例如,您可能有不同的主机指向您的实例(现在或将来 - 一个常见的例子是'www.mysite.com',您当前的设置会忽略它)。

答案2

查看 Drupal 安全页面模块:http://drupal.org/project/securepages

干杯

相关内容