在 .htaccess 重定向中保留 HTTP/HTTPS 协议

2024-02-06

我必须在 htaccess 中将端口 80 重定向到 2368,但我想保持请求的协议完整,以便 SSL 不会中断。

我目前有这个:

RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
RewriteRule ^ http://sub.domain.com:2368%{REQUEST_URI} [P,QSA,L]

其工作正常,但如果可能的话,我希望从 %{HTTP_HOST} 条件中获取协议。

有没有一种方法可以使其更加动态,而无需硬编码域和协议?

它看起来很慢。


Jon 提供的技巧是一个很好的技巧,但我担心如果你想使用更多它可能会崩溃[OR]条件,如果您使用更多反向引用,您必须小心使用哪个数字(%1 or %2 or ..).

我认为最优雅、最强大、最干净的解决方案智能 HTTP/HTTPS 处理 http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html就是设置一个变量:

# initialization code - put only once at the beginning of .htaccess
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]

# simply use %{ENV:proto} in your rules:
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
RewriteRule ^            %{ENV:proto}://sub.domain.com:2368%{REQUEST_URI} [P,QSA,L]

优点还在于初始化代码只需运行一次,因此如果您有更多重写规则,那么生成的代码会更短、更优雅。

请注意,常见的设置是 cloudflare 提供的 https,在这种情况下,HTTPS 在服务器本身上未“打开”。在这种情况下,您需要额外的规则,例如(注意顺序):

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"https"' [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .htaccess 重定向中保留 HTTP/HTTPS 协议 的相关文章

  • Zend Framework 2 重写 URL

    我有一个 Zend Framework 2 应用程序 我希望使用 htaccess 重写一些 URL htaccess 文件位于我的公用文件夹中 我已经验证了一个简单的重写规则 它将所有 testurl 重写为 test php Rewri
  • 为什么在.htaccess中使用[QSA]时$_POST为空?

    我在 htaccess 中有以下内容 RewriteCond REQUEST URI app index php RewriteRule htm index php url 0 QSA L 一切都很好 但结果 URL 的 POST 为空 我
  • 如何使用 .htaccess 提供预压缩的 gzip/brotli 文件

    我正在尝试为 html js 和 css 提供预压缩的 gzip brotli 文件 用下面的代码 RewriteEngine on Brotli If the web browser accept brotli encoding Rewr
  • IIS 7 规范 URL 重定向

    我想让一个网站的地址中始终包含 www 并通过 IIS 重写强制执行 例如 test com 将变为 www test com 典型的重写规则示例是
  • .htaccess 重定向到随机 URL

    我的服务器上有几个页面有流量 我需要将它们重定向到其他网站 这是最简单的部分 问题是我需要将事情混合起来并随机将人们发送到新站点 我发现可以在 time sec 之前做到这一点 但无论我尝试什么 我目前的知识都不足以使其发挥作用 这是我现在
  • 如何重写 URL 而不刷新,例如 GitHub.com

    我在浏览 GitHub com 时注意到 在查看存储库的源代码时 您单击一个文件 源代码会滑入 并且 URL 会发生变化 但页面看起来并没有刷新 有谁知道这是如何做到的 我见过使用 符号完成此操作 尤其是在创建 Flash 站点时 但我从未
  • URL 重写 OpenCart 产品 SEO

    我想重写我的 opencart 网上商店的产品网址 Opencart 本身有一个 seo 实现 这真的很糟糕 我已经更新了 seo 实现 以便能够对多个类别使用相同的关键字 请参阅 Opencart 重复 URL 关键字 https sta
  • Drupal URL 重写冲突

    我已将 Drupal 7 安装在站点的根目录中 htaccess 文件自安装以来未曾修改过 不过 我还在子目录中设置了 CodeIgniter 我在 CI 目录中创建了一个 htaccess 文件 其中包含从 url 中删除 index p
  • 保护公用文件夹中的某些文件和文件夹不被查看

    今天我已经为此苦苦挣扎了一段时间 我想要完成的是我需要阻止所有用户访问某些 php 文件和图像以及更多内容 它们位于单独的文件夹中 我正在使用 WAMP 服务器 我不希望用户只能访问该网站 例如 www images crazy cat p
  • 使用 asp.net 重写 URL。是否需要配置?

    我正在尝试在我的项目中启用重写的网址 这篇文章描述得很好 scottgu 的 url 重写 http weblogs asp net scottgu archive 2007 02 26 tip trick url rewriting wi
  • Apache2 重写查询字符串转义两次

    在虚拟主机配置文件中使用此规则会导致查询参数的双重转义 RewriteEngine On RewriteCond HTTPS off RewriteRule https HTTP HOST REQUEST URI 例如 http examp
  • 在 MVC 4 中使用路由更改 URL 参数

    我的几个 API 函数允许使用名为 attribute 和 attributeDelimiter 单数 的参数 这意味着预期的 URL 格式为 SomeController SomeAction aaa bbb attribute ccc
  • .htaccess 仅在 safari 上导致重定向循环 - http 到 https

    这种情况只发生在野生动物园中 我不知道为什么 谷歌浏览器 火狐浏览器 一切正常 在任何苹果产品上 使用 Safari 我都会得到一个重定向循环 Code RewriteCond HTTP HOST example com NC Rewrit
  • CodeIgniter:删除 WAMP 上 URL 中的“index.php”

    在 CodeIgniter 中 我想删除本地主机 WAMP 上 URL 中的 index php 例如 http localhost com ci index php controller function http localhost c
  • HTAccess - 令人困惑的干净网址

    如果我想简单地重定向 clients page to clients php view page我会使用像这样简单的东西 它效果很好 Options FollowSymlinks RewriteEngine on RewriteRule c
  • 使用ip地址访问时删除index.php

    我在服务器上上传了 codeigniter 项目 从 URL 中删除 index php 不起作用 我使用IP地址访问它 喜欢http ip http ip地址 下面是我的htaccess
  • Angular2通用部署到apache远程服务器

    我在将 Web 应用程序部署到 Apache 远程服务器时遇到问题 我已经通过以下步骤部署了一个使用 RESTful API 服务 用 PHP 编写 托管在 public html api 的标准 Angular2 Web 应用程序 在项目
  • 如何在 apache 上为锚点 cms 重写指令

    我使用的是一个名为anchor的cms http anchorcms com docs getting started configuration http anchorcms com docs getting started config
  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule

随机推荐

  • 压缩 Json Javascript [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目前 我将 JSON 从 Ajax 帖子发送到服务器 然后使用 Jackson Mapper 将其转换
  • Clickhouse字符串字段磁盘使用情况:null vs 空

    我正在为一个大型 Clickhouse 表设计一个架构 其中的字符串字段可能非常稀疏 我想知道这些字段是否应该为空或者我是否应该存储一个空字符串 作为默认值 就存储而言 哪个更好 您应该存储一个空字符串 可空列会占用更多磁盘空间 并使查询速
  • Visual C++ 应用程序作为 MS Access 数据库的前端 - 多用户数据访问和类似画布的 GUI 问题

    在我工作的公司中 我有机会编写一个应用程序 它将取代旧的 Excel 工作簿 用于计划生产队列 由于 VBA 很简单并且 Excel 易于使用 因此几年来 这个工作簿被几个人用来计划 添加有关当前生产状态的更改 注释 整个工作簿几乎没有功能
  • 在命名空间中定义双精度常量的最佳方法是什么?

    在命名空间中定义双精度常量的最佳方法是什么 例如 constant h namespace constant static const double PI 3 1415926535 No need in constant cpp 这是最好的
  • 如何打印 pandas.io.formats.style.Styler 对象

    我有以下代码可以生成 pandas io formats style Styler 对象 import pandas as pd import numpy as np df pd DataFrame text foo foo bar bar
  • Visual Studio 2012 无法识别所有挂起的更改?

    我正在与我的团队一起使用 TFS 进行项目 当我尝试为我的类创建新的建模项目时出现问题 它不会出现在待处理的更改中 所以我的做法是这样的 首先 我进入保存课程的文件夹 我尝试了很多组合 我尝试首先右键单击我的文件夹并输入 签出进行编辑 然后
  • 如果在已经为 true 的情况下出现新错误,则 Validation.HasError 不会再次触发

    我使用 MVVM 和我的对象实现 IDataErrorInfo 设置属性后 我运行自定义验证方法 如果验证通过 我将返回 String empty 这会将 Validation HasError 设置为 false 如果验证失败 则 Val
  • Angular 4 + zonejs:路由在未捕获的错误后停止工作

    如果在路由期间组件 构造函数或 ngOnInit 出现未捕获的错误 则导航将不再起作用 即使有一个全局 ErrorHandler 和一个用于 RouterModule 的 ErrorHandler 也会发生这种情况 也添加了一个 ZoneL
  • 如何在 ITRS Geneos 中监控 MQ

    谁能举例说明如何在 ITRS 中设置如何使用 mq queue 插件监控 MQ 队列 我下面有两张它正在寻找的屏幕截图 我不确定这将如何帮助我们确定队列中卡住了多少消息 高级 选项卡下的设置告诉插件如何连接到 IBM MQ 队列管理器 如何
  • 是否可以让“dput”返回在封闭环境之外运行的源代码?

    假设我有一个闭包add y y 它返回一个函数 该函数添加y到它的输入 add y lt function y function x x y add 4 lt add y 4 所以价值add 4是一个将 4 添加到其输入的函数 这有效 我想
  • KMP算法与Z算法的关系

    KMP and Z算法是众所周知的字符串搜索算法 KMP算法通过 KMP 失效函数寻找模式 该函数定义为 pat是搜索模式 lps i pat 0 i 的最长真前缀 也是 pat 0 i 的后缀 e g for string abcab 这
  • 如何使用C#通过P6 Web服务读写P6DB中的数据

    我想在 P6 Web 服务中使用基于 Cookie 的身份验证 我点击了以下两个链接 http docs oracle com cd E16281 01 Technical Documentation Web Services Progra
  • 最多不能超过 50%。矩阵乘法的理论性能

    Problem 我正在学习 HPC 和代码优化 我尝试复制 Goto 的开创性矩阵乘法论文中的结果 http www cs utexas edu users pingali CS378 2008sp papers gotoPaper pdf
  • 基于边界的三角形未按预期渲染

    我试图用 4 个旋转的三角形制作一个完整的正方形 但是当我放置它们时 它们之间有一个很薄的空间 更奇怪的是 当我旋转整个东西时 线条在 Chrome 中消失 但在 Firefox 中出现在三角形的中间 再次形成 X jsFiddle htt
  • 如何使用 JQuery 发送按键触发器

    我如何发送特定按键代码的触发按键 例如 以编程方式使用 JQuery 的 TextBox 上的 9 事件 这就是我打算做的 以编程方式向文本框输入值 然后以编程方式触发文本框上的 Tab 键以退出该字段 my code tags1 val
  • 即使安装了 mtl,也找不到模块“Control.Monad.State”

    当我尝试加载包含的模块时import Control Monad State I got Could not find module Control Monad State Perhaps you meant Control Monad S
  • 语义分割中的上采样

    我正在尝试实现一篇关于语义分割的论文 但我对如何对分割网络生成的预测图进行上采样以匹配输入图像大小感到困惑 例如 我使用 Resnet101 的变体作为分割网络 如本文所使用 通过这种网络结构 大小为 321x321 的输入 论文中再次使用
  • Log4net - 如何知道文件何时滚动?

    我有一个由 log4net 创建的日志文件 该文件每小时都会更改 有没有办法知道这个滚动何时发生 就像 log4net 库中的一个事件一样 我可以绑定到该事件 并在触发该事件时执行操作 我不是在寻找代码示例 只是想知道此事件是否存在 以及在
  • 当按下引号键时,java.awt.Robot.keyPress 抛出 IllegalArgumentException

    当您尝试使用 Robot keyPress 键入 双引号 它抛出 java lang IllegalArgumentException Invalid key code 我该如何解决或解决这个问题 如果有帮助的话 我目前使用的是 Windo
  • 在 .htaccess 重定向中保留 HTTP/HTTPS 协议

    我必须在 htaccess 中将端口 80 重定向到 2368 但我想保持请求的协议完整 以便 SSL 不会中断 我目前有这个 RewriteCond HTTP HOST sub domain com NC RewriteRule http