.htaccess https 重定向单个页面(使用相对 URL)

2023-12-02

我需要能够将单个页面从标准 http 重定向到 https。例如,我想从http://domain.com/quote.php to https://domain.com/quote.php.

到目前为止,我在 .htaccess 文件中使用此代码,它适用于初始重定向。

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^quote.php https://domain.com/quote.php [R=301,L]

我的问题是,一旦我访问了 quote.php 页面并重定向到 https 版本,我导航的所有其他网站页面都会继续使用 https 协议。这是一个潜在的重复内容问题,因为我现在可以通过 http 和 https 访问相同的内容。

所以我想做的是能够执行上述重定向,然后以某种方式对除 quote.php 之外的所有页面反向执行相同的操作。因此,如果您尝试通过 https 访问它们,它将重定向到默认的 http 版本。

我在整个站点中使用相对 URL,因此不能简单地在 https/http 前缀中进行硬编码。如果可能的话,我需要能够通过 .htacess 来完成此操作。

任何帮助是极大的赞赏。


RewriteCond %{HTTPS}  off
RewriteRule  ^quote.php$  https://domain.com/quote.php  [R=301,L,QSA]

RewriteCond %{HTTPS}  on
RewriteCond %{REQUEST_URI}   !^/quote.php
RewriteRule  ^(.*)$  http://domain.com/$1  [R=301,L,QSA]

回复评论: 要向条件添加新页面,只需将它们放在括号中。例如:

RewriteCond %{HTTPS}  off
RewriteRule  ^(quote|contact).php$  https://domain.com/$1.php  [R=301,L,QSA]

问题2:QSA标志将当前查询字符串添加到新 URL。默认情况下会发生这种情况,除非您更改查询字符串。您现在可以安全地删除它们,但如果您添加了查询字符串,并且还想要旧的查询字符串,请将其放回去。


Edit 2:
上面的代码有一点安全问题:(,实际上它不仅仅是一点:-D。 当你使用时https传输html代码和页面是使用相对路径,所以没问题。但是当你把这些代码放入.htaccess他们变成http这就是问题所在:-)。输入下面的代码来解决问题:):

RewriteCond %{HTTPS}  off
RewriteRule  ^(quote|contact).php$  https://domain.com/$1.php  [R=301,L,QSA]


RewriteCond %{HTTPS}  on
RewriteCond %{REQUEST_URI}   !^/(quote|contact).php
RewriteCond %{REQUEST_URI}   !^/(.*)\.(css|png|js|jpe?g|gif|bmp)$
RewriteRule  ^(.*)$  http://domain.com/$1  [R=301,L,QSA]

现在,您在安全页面上使用的所有图像、脚本等都可以安全传输。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess https 重定向单个页面(使用相对 URL) 的相关文章

随机推荐

  • 将 PHP 代码插入 Visual Composer

    我有 php 代码 ACF Pro 插件代码 如何将此代码插入到我的 Visual Composer 中 很长时间找不到解决方案 但现在对我来说至关重要
  • 在 HTML 标记中使用 System.Drawing.Image

    我有一个可能很简单的问题 我将图像存储在数据库中 然后在应用程序中使用 C 方法来获取该图像并将其存储在自定义类中 如下所示 public class MyImage public System Drawing Image myImageF
  • 如何通过在 Windows 中从源代码构建 gvim/vim 来添加“-with-python”选项

    我已经尝试在 Windows 中从源代码构建 vim gvim 好几天了 而且 这座建筑实际上是通过两种方式运作的CygWin and WinGW 然而 python没有在我的 g vim exe 中 添加 它禁用了pyflakes vim
  • 会话 ID 太长或包含非法字符,有效字符为 a-z、A-Z、0-9 和 '-,'

    怎么解决 警告 session start function session start 会话 ID 太长或包含非法字符 有效字符为 a z A Z 0 9 和 in 第 3 行 警告 session start function sess
  • 使用 numpy 从 csv 加载一定数量的行

    我有一个很长的文件 我只需要其中的一部分 一部分 有新数据传入 因此文件可能会变长 从我使用的 CSV 加载数据numpy genfromtxt np genfromtxt filename usecols col delimiter sk
  • 如何在 Mongoose 中将 _id 设置为数据库文档?

    我试图通过计算数据库中的文档数来动态创建 Mongoose 模型的 id 并使用该数字创建 id 假设第一个 id 为 0 但是 我无法从我的值中设置 id 这是我的代码 Schemas var Post new mongoose Sche
  • Jetpack Compose 中的 super.onbackpressed()

    I need to click on the image to go to the last activity 调用标准方法时出错 这是最简单的方法 但是not一个安全并且应该not是推荐的一个 因为我们不知道这里可能有什么上下文 但如果它
  • CSS:绝对位置调整大小失败

    所以 我有这张带有 CSS 样式的图像 city1 position absolute float left top 34px left 170px a href malmo img class city1 src images city
  • 如何使用可选的格式化消息实现符合标准的断言宏?

    使用可选格式化消息实现符合标准的断言宏的方法是什么 我所拥有的在 clang 中工作 但是 正确地 触发了 Wgnu zero variadic macro arguments如果打开则发出警告 例如通过 Wpedantic 当使用宏而没有
  • 绕轴旋转画布问题

    我正在使用 canvas 3d 绘制 3d 图形 在其中我可以绘制 1 5 4 8 6 2 等点 所以我能够绘制所有正和负 x y 和 z 轴 我还通过使用箭头键实现了旋转效果 旋转说明 z 轴从屏幕中心延伸出来 要绕 x 轴旋转 请按向上
  • 如何快速从一百万条数据记录中获取最近的100个点?

    给定一个点A 从一百万条数据记录中获取最接近的100个点 数据库是MySql 百万条经纬度记录 这些点表示用户登录时的当前位置 因此它们可能会发生变化 设想 当用户打开页面时 显示最近的前 100 个其他人 如果您还没有这样做 请为您的数据
  • Java:使用 TCP 套接字的简单 http GET 请求

    我在本地托管一个简单的 PHP 回显服务器 我试图用 Java 向服务器发送消息 并使用 GET 请求打印响应 但收到 格式错误的 HTTP 请求 错误 谁能告诉我如何正确格式化 GET 请求 客户端代码 import java io im
  • 了解有关内联水平框高度的 CSS2.1 规范

    CSS2 1 第 10 6 1 节指定 内容区域的高度应该根据字体而定 但这规范没有具体说明如何 例如 UA 可以使用 em box 或字体的最大上升部分和下降部分 内联非替换框的垂直内边距 边框和边距从内容区域的顶部和底部开始 并且与以下
  • word中删除contentControl后出现空行

    我正在尝试通过以下方式写入Word文档VB net为此我正在使用内容控件在我的Word文档中 但有时我必须删除内容控制或者通过 VB 代码实现另一个 这很容易contentcontrol delete但是当这个 contentControl
  • React 测试库:测试元素是否已映射/渲染

    Issue 我有一个项目列表 我想按每个项目进行测试name值 字符串 我在用着 testing library react并使测试套件正常工作 但我无法让我的测试工作 概述 Each item测试 ID 为data testid side
  • 如何在改造android中发布数组

    如何通过 post 方法在改造中发布以下参数 params body learning objective uuids ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2 note FasfAF
  • 如何从运行时创建的文本框中获取文本

    我创建了 WinForm 应用程序 用户可以在其中设置他想要的文本框数量 范围 1 99 我正在使用此代码在运行时创建文本框 for int i 0 i lt Calculation Num i TextBox txtRun new Tex
  • IE9 注入脚本标签的执行顺序是否有已知的解决方法?

    我确信我不完全理解这个问题 但它seems我们在我的项目中的 IE9 上看到了奇怪的行为 在某种程度上与通过调用注入的 JavaScript 的无序执行有关document write e g document write
  • 如何使用 Spring JmsListener 手动确认消息

    我正在将 JMS 与 Spring Jms Listener 一起使用 我能够使用 JMS 队列中的消息 但它正在使用AUTO ACKNOWLEDGE 我该如何设置CLIENT ACKNOWLEDGE这样我只有在确认后才能使用其他消息 Be
  • .htaccess https 重定向单个页面(使用相对 URL)

    我需要能够将单个页面从标准 http 重定向到 https 例如 我想从http domain com quote php to https domain com quote php 到目前为止 我在 htaccess 文件中使用此代码 它