如何将整个站点从 HTTP 重定向到 HTTPS,Drupal 站点中的 2 个页面除外?

Posted

技术标签:

【中文标题】如何将整个站点从 HTTP 重定向到 HTTPS,Drupal 站点中的 2 个页面除外?【英文标题】:how to redirect complete site from HTTP To HTTPS except for 2 pages in Drupal Site? 【发布时间】:2016-09-03 01:51:27 【问题描述】:

我有 Drupal 站点。

我已经检查了以下所有链接,但要么它们没有重定向,要么我收到错误 - 网站有太多重定向

https://www.drupal.org/https-information Redirect all the data served by https to http https://drupal.stackexchange.com/questions/24072/how-to-simply-make-the-whole-site-https http to https apache redirection How to redirect from HTTPS to HTTP? https://ilovedrupal.com/blog/redirect-http-https-apache-configuration-permanent-redirect-http-https-pages

我需要将我的整个站点 HTTP 重定向到 HTTPS,但两个页面除外:-

首页 - www.hello.com 产品 - www.hello.com/products

下面的代码-sn-p 将整个站点重定向到 HTTPS 没有问题,但我需要转义主页和产品页面,为此我尝试了超过 10-15 种组合。

   RewriteCond %HTTPS off [OR]
   RewriteCond %HTTP_HOST ^www.hello\.com*
   RewriteRule ^(.*)$ https://hello.com/$1 [L,R=301]

非常感谢任何帮助。

【问题讨论】:

为什么不是整个网站,包括那两个页面? 1)首页是简单的静态页面,所以HTTP加载速度比HTTPS快 2) 其他页面正在发出外部域请求,因此在 HTTPS 中,它被阻止,并且用户必须批准然后重新加载页面,然后提供该请求 re 1.... 除了识别它是否应该是 https 的逻辑也是开销(与简单地将所有内容重定向到 https 相比),因此不提供 https 的任何速度优势都可以忽略不计因为那一页无论如何都是偏移的 re 2.... 外部域请求在 https 中是如何被阻止的? 【参考方案1】:

你可以使用:

RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST ^www\.hello\.com
RewriteCond %REQUEST_URI !^/products/?$ [NC]
RewriteRule ^(.+)$ https://hello.com/$1 [L,R=301]

【讨论】:

Nopes..Error 主页按需要正常加载,但所有其他页面都抛出错误..此页面重定向太多 @just FYI..目前我正在子域上测试所有这些配置 - 即 www.dev.hello.com 这个.htaccess 不会有问题。因为我只避免product 和根页面... 你清除缓存或者用其他浏览器测试了吗? 当然用子域测试是个问题,因为你重定向到https://hello.com...【参考方案2】:

好吧,让我们试试吧,这是你的代码:

 RewriteCond %HTTPS off [OR]
 RewriteCond %HTTP_HOST ^www.hello\.com*
 RewriteRule ^(.*)$ https://hello.com/$1 [L,R=301]

改成这样:

RewriteEngine on
RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST ^www.hello\.com*
RewriteCond %SCRIPT_FILENAME !products [NC]
RewriteRule ^(.+)$ https://hello.com/$1 [L,R=301]

请试一试,如果没有做你想做的事,请告诉我。

【讨论】:

nopes mate.. 可以很好地重定向主页,但不适用于产品页面和其他页面,此外它还会为除主页之外的每个页面附加一个查询字符串www.hello.com/index.php?q=products

以上是关于如何将整个站点从 HTTP 重定向到 HTTPS,Drupal 站点中的 2 个页面除外?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 301 重定向而不是 302 将 HTTP 站点重定向到 HTTPS 站点

使用 htaccess 重定向整个站点

将所有页面从站点 A 重定向到站点 B,包括 http 和 https

Elastic Beanstalk 将 http 重定向到 https 用于 iis 站点

如何使用漂亮的 url 将 HTTP 重定向到 HTTPS?

将某些页面从 HTTPS 重定向到 HTTP