Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将一个页面的HTTP重定向到HTTPS

将一个页面的HTTP重定向到HTTPS
EN

Stack Overflow用户
提问于 2011-08-20 17:59:04
回答 1查看 28.5K关注 0票数 11

我知道这个问题已经被问死了,但出于某种原因,在我读过的20篇帖子中,没有一篇对我来说是正确的,希望有人能提供一些见解。

基本上,我有一个简单的购物车,我想要重定向两个uri的HTTPS,我的结账页面,和我的管理文件夹:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/checkout
/admin

我可以使用以下代码成功重定向到HTTPS版本以进行结帐:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteEngine On
#https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^checkout https://palatinehillsestatewinery.com/checkout [R=301,L]

# remove index.php, this is just included to show everything in my .htaccess
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L]

我发现这个和所有其他解决方案的问题是,一旦我决定返回一个不应该是HTTPS的页面,url仍然是HTTPS。

我一直在笨拙地处理循环等问题。

如果任何人可以帮助重定向到HTTPS在这两个页面,然后在所有其他页面上的http,这将是一个巨大的帮助和非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-20 18:22:11

这不是直接回答你的问题,但我觉得我把它作为一个答案(加上它太大了,不能作为评论)。

我的建议:请停止玩htaccess来完成这类任务(强制少数URL使用HTTPS,强制其余URL使用HTTPS)。

最好的方法是为所有链接(页面,而不是资源)生成完整的URL ,其中包括域名和协议。在这种情况下,所有URL都将立即具有正确的协议(HTTP/HTTPS)。当然:如果(出于某种奇怪的原因)是通过HTTP请求的,那么您仍然可以将(301或302重定向)请求修复为假定为https的请求。这就是.htaccess可以安全和容易使用的地方。

如果用户将通过HTTPS请求普通页面(应该通过HTTP提供) --那么让他这样做--这没有什么问题。是的-- HTTPS在服务器端需要更多的资源,但是如果您以这种方式生成所有的链接,实际上将不会出现这种情况,除非用户特别地更改了协议。即使这样一个页面将通过HTTPS提供服务,他单击的下一个“正常”链接也将是HTTP -- 1个额外的基于HTTPS的页面查看不会杀死您的服务器。

当站点有安全区域时,我一直在使用这种方法。根据日志,我们只有不到0.01%的页面浏览量是通过“错误的”协议被查看/试图被查看的--其中绝大多数是机器人或尝试黑客攻击/漏洞搜索。

基于这样的统计数据,我会说--它工作得很完美。是的--您需要稍微修改一下代码/模板来实现这一点。但这比摆弄.htaccess和mod_rewrite要好得多。

无论如何,这里有一些规则可以帮你完成这项工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# force https for all URLs in /checkout
RewriteCond %{HTTPS} =off
RewriteRule ^checkout https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# don't do anything for images/css/js
RewriteRule \.(gif|jpe?g|png|css|js)$ - [NC,L]

# force http for all other URLs that are not in /checkout
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/(checkout|index.php/checkout)
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# your other rules here, e.g.:
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# force https for all URLs in /checkout
RewriteCond %{HTTPS} =off
RewriteRule ^checkout https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

# force http for all other URLs that are not in /checkout
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/checkout
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# your other rules here, e.g.:
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L]
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7133599

复制
相关文章
【16】万恶的引导设计:配表篇
上一篇,我们了解了引导的一些理论知识,包括分段、分步的概念,强引导与弱引导,引导的触发、类别、操作、保存点等,本篇笔者将结合这些理论来聊聊引导的配表。
代码咖啡
2019/10/08
1K0
压测grafana面板之请求响应耗时解析
在某次压测护航中,有同学提问,为什么被压测服务后台日志查看到的大部分请求耗时都比95分位平均响应时间小?是不是数据统计的有问题?
cailynyu
2022/02/14
2.9K1
一个MySQL建表需求的讨论和引导
昨天收到一个业务同学的需求邮件,一般有些复杂的需求业务同学会发邮件告知我们,需要我们评估之后再做交付,我看了邮件之后,发现这个需求好像有点别扭,大体的意思是在中间件的环境中创建一张表,表结构如下:
jeanron100
2021/03/16
2.8K0
Bootstrap响应式前端框架笔记十五——面板与井
    Bootstrap中的面板由pannel相关类来创建,一个完整的面板分为面板头部、面板体和面板注脚,并且Bootstrap中默认定义了一些面板风格,示例如下:
珲少
2018/08/15
8000
Bootstrap响应式前端框架笔记十五——面板与井
【嘘】内有惊喜,请勿扩散
▼扫码加入DNSPod官方用户群▼ 第一时间追踪活动最新动态 SMB 腾讯云中小企业产品中心     腾讯云中小企业产品中心(简称SMB),作为腾讯云体系中唯一专业服务于8000万中小企业的业务线,致力于为中小微企业提供全面完善贴心的数字化解决方案。产品线覆盖了企业客户从创业起步期、规范治理期、规模化增长期、战略升级期等全生命周期,针对性的解决企业的信息化、数字化、智能化的生产力升级需求。本中心还拥有两大独立腾讯子品牌:DNSPod与Discuz!,在过去15年间,为超过500万企业级客户提供了强大、优质
腾讯云DNSPod团队
2022/01/21
2610
苦逼的程序员(内有惊喜)
很多人拿程序员来开涮,比如: 从前,有一个程序员,他临死的时候, 不小心得到了一盏神灯 。然后他向神灯许愿, 希望在有生之年能写一个好项目。 后来,后来他得到了永生。 再比如: 程序员职业服装! 还
用户1631416
2018/04/12
6030
苦逼的程序员(内有惊喜)
动手练一练,做一个响应式的后台管理面板
作为一名前端开发者,我们或多或少都会接触后台管理系统的制作,你是否会亲自纯手工制作做还是从网上找源码改一个呢?今天我们将从零开始纯手工制作一个后台管理面板的首页,通过这个案例你将会学习到如何制作一个响
前端达人
2020/03/16
1.3K0
动手练一练,做一个响应式的后台管理面板
千万级数据表选错索引导致的线上慢查询事故
又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕很多大佬们,一周能产出五六篇文章,给我两个肝我都不够。好了,不多说废话了...
Rude3Knife的公众号
2020/08/02
1.4K0
国内有哪些好的刷题网站?
CoderAfterWork靠写代码挣钱去浪... 刷题也就这么点地方 1、Leetcode 鼎鼎大名的Leetcode,据不完全统计在上面被刷过的题可以围绕地球三圈。(没说赤道哈,就是这么严谨。)总之,很多国内外的码农在上面刷题。难度从easy到hard都有,而且覆盖面极广。现在还增加了数据库和shell,相匹配的论坛也可以多看看。很锻炼和国外码农沟通的能力,对于以后去混Github也有好处。 特点:各种语言支持很广泛,题型覆盖很广,测试数据集较弱。 2、Codility 同样一家著名的国外刷题网站。和L
前朝楚水
2018/04/04
3.4K0
Grafana 统计面板与文本面板的使用
统计面板可以用于显示一个大的统计值和一个可选的背景颜色,我们可以使用阈值来控制背景或颜色值,效果如下所示:
我是阳明
2021/11/23
2.6K0
MongoDB 路由表刷新导致响应慢场景解读
MongoDB sharding 实例从3.4版本升级到 4.0版本 以后插入性能明显降低,观察日志发现大量的 insert 请求慢日志:
MongoDB中文社区
2020/11/11
2K0
MongoDB 路由表刷新导致响应慢场景解读
2018,新年快乐 | 内有福利
长按二维码关注 “腾讯乐享” 随机送出20个QQ公仔 福利
腾讯乐享
2019/03/12
1.3K0
2018,新年快乐 | 内有福利
面板环境的安装
安装完成在浏览上打开面板的地址,登入面板,面板会自动推荐你安装环境套件,这里有两种选择,第一种是LNMP套件,第二种是LAMP套件:
霹格软件
2018/09/11
6540
面板环境的安装
cPanel面板和宝塔面板区别
  cPanel面板和宝塔面板有什么区别?cPanel面板和宝塔面板都是一种目前比较常用的服务器管理面板,那么,cPanel面板和宝塔面板哪个好呢?让我们一起来详细了解一下cPanel面板和宝塔面板吧
会长君
2023/04/26
4.2K0
清除linux系统的多余引导
由于我把系统给升级(update)了,在grub引导模式出现新旧版本(Grub与Grub2)的引导系统分别为正常启动和进入恢复模式各2个引导项,如下图显示:百度找不到相关或类似的教程,只好半夜起来研究,现在做好了并写下笔记。
用户1685462
2021/07/23
6.3K0
利用threshold实现的遮罩引导
点击“开始引导”,则进入引导操作。除指定的按钮可以操作外,其它区域均不可点击。这种应用当新功能或是新产品上线后,用来引导用户来使用产品/功能,是十分有用的。facebook也有类似的引导,方法也很简单:用4个绝对定位的DIV(指定一个背景 + 一定透明度)遮住其它部分,这样可以被操作的区域就“留空”出来。
meteoric
2018/11/16
6160
Netty中的引导类Bootstrap
Bootstrap是用来组织Netty的各个结构(pipeline,handler,eventloop),并使他们运行起来的类结构。分成两块,一个是客户端引导类Bootstrap,只用1个channel来处理所有的网络交互,另一个是服务端的ServerBootstrap,它提供一个父channel来接受客户端的请求,然后父channel创建多个子channel来用于的通信
爬蜥
2019/07/09
9560
旁观者.个性引导页个性引导页
这款个人主页简约而不失优雅,背景图片为随机api,共有38张随机图片,每次刷新都会看到不一样的美图。
小化先森
2023/03/05
1.1K0
点击加载更多

相似问题

这个单元测试是否与实现紧密耦合?

30

逻辑与数据紧密耦合的单元测试系统

40

不耦合到实现细节的单元测试行为

20

共享数据库与紧耦合消息模型

10

如何将此耦合应用程序解耦?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文