在 IIS URL Rewrite 2.0 中,为什么 HTTP_HOST 包含端口号?

2024-03-15

我正在尝试使用IIS URL 重写 2.0 http://www.iis.net/downloads/microsoft/url-rewrite在 Windows 8.1 上使用 IIS 8.5。根据从重写规则访问 URL 部分 http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Accessing_URL_Parts_from_a_Rewrite_Rule,

For an HTTP URL in this form: http(s)://<host>:<port>/<path>?<querystring>

• The <path> is matched against the pattern of the rule.
• The <querystring> is available in the server variable called QUERY_STRING and can be accessed by using a condition within a rule.
• The <host> is available in the server variable HTTP_HOST and can be accessed by using a condition within a rule.
• The <port> is available in the server variable SERVER_PORT and can be accessed by using a condition within a rule.
• Server variables SERVER_PORT_SECURE and HTTPS can be used to determine if a secure connection was used. These server variables can be accessed by using a condition within a rule.
• The server variable REQUEST_URI can be used to access the entire requested URL path, including the query string.

为了测试这一点,这是我使用的规则:

<rule name="Test" stopProcessing="true">
  <action type="Redirect" url="http://localhost/?{HTTP_HOST}" redirectType="Temporary" />
</rule>

然后我使用 Fiddler 中的 Composer 选项卡创建以下请求:

http://localhost.localdomain:65352/

IIS 对此做出了回应

HTTP/1.1 307 Moved Temporarily
Location: http://localhost/?localhost.localdomain:65352

由此我们可以看到,端口号包含在 HTTP_HOST 变量中,这与上面引用的文档相反。这给我的匹配规则增加了一些复杂性,因为我必须考虑端口号的可选存在。如何只获取主机名而不获取端口号?


不幸的是,我无法告诉你为什么会发生这种情况;但我可以告诉你,使用{SERVER_NAME}代替{HTTP_HOST}为我解决了这个问题。

See: https://serverfault.com/a/418530/3495 https://serverfault.com/a/418530/3495

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

在 IIS URL Rewrite 2.0 中,为什么 HTTP_HOST 包含端口号? 的相关文章

  • IIS 的 ProxyPassReverseCookieDomain 等效项

    我使用 IIS 和 URL 重写作为反向代理 我的实际 Web 应用程序托管在无法直接访问互联网的服务器上 在重写规则中 我将反向代理的主机名替换为本地 IP 地址 这很好用 不过 我使用的应用程序提供下载 一旦客户端发出下载请求 服务器端
  • URL 重写包括尾部斜杠(如果不存在)

    我有这个RewriteRule上班 RewriteBase my path RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule my path
  • 带有尾部斜杠的奇怪 Nginx 行为

    我有一个非常有趣的行为 我想避免在我的网站上的 URL 中出现尾随斜杠 我已经把rewrite 1 permanent 规则进入我的服务器块 所以 https example com something https example com
  • Sitecore - 将网址中的“”重写为“-”,但仍然允许破折号作为合法的项目名称

    我读过六本关于在 Sitecore 中将空间重写为更友好的内容的指南 但所有这些指南都依赖于 Sitecore
  • IIS 的 URL 重写规则替换每个页面中的文件夹路径

    我的网站项目有 300 多个页面 随着时间的推移 我们创建了一个安全的新服务器 该服务器专门用于网站中的所有图像 所以这是场景 当前图像的实现 在 aspx 中 在 css 中 http www mysite com assets comm
  • .htaccess 更改 URL

    所以我有一个 mvc 系统设置 但它不会生成搜索引擎友好的 url 典型的 url 格式如下 http sitedomain com class classMethod parameter valueA parameter2 valueB
  • Seam 2.2.0 URL 重写不起作用

    我正在尝试一个简单的 URL 重写示例 但它对我不起作用 我正在使用部署到 JBoss 5 1 0 的 Seam 2 2 0 我的pages xml 包含
  • 使用 nginx 的子目录中的 CakePHP(重写规则?)

    不久前我设法让它工作 但是当我回到我开始的 cakephp 项目时 似乎我最近对 nginx 所做的任何更改 或者可能是最近的更新 都打破了我的重写规则 目前我有 worker processes 1 events worker conne
  • 删除 php 扩展名,停止访问带有 .php 扩展名的 url 并删除尾部斜杠

    我希望我的网址没有扩展名 因此没有 php 扩展名 我也希望没有机会访问带有尾部斜杠的网址 如果您尝试使用 php 访问它 以下内容将删除 php 扩展 然后重定向到无扩展的 url 我开始编写一条规则来阻止您使用 和重定向进行访问 但它不
  • REQUEST_URI 与显式路径和文件名不匹配

    真的很困惑 因为形式和语法看起来都很好 REQUEST URI 的 RewriteCond 与显式路径和文件名不匹配 隔离时 REQUEST FILENAME 的 RewriteCond 匹配得很好 我已经使用 phpinfo 验证了 RE
  • 动态将 RewriteBase 设置为当前文件夹路径

    有没有办法将 RewriteBase 设置为相对于主机根目录的当前文件夹 htaccess 文件所在的文件夹 的路径 我有一个 CMS 如果我将其移动到主机中的目录 它将无法工作 除非我将 RewriteBase 设置为相对于主机根目录的目
  • 使用 IIS7 的 URL 重写捕获 Cookie 中的值

    我需要为 IIS 7 5 网站编写一个 URL 重写规则 捕获特定 cookie 中的值 然后使用该值构建 URL 例如 传入的请求如下所示 GET http myserver com test aspx HTTP 1 1 Accept t
  • Apache .htaccess:如何在 Firefox 上用斜杠重写反斜杠?

    如何重写反斜杠 带斜线 在火狐浏览器上 Chrome IE Safari Opera 已构建浏览器用斜杠重写反斜杠 但 Firefox 3 6 13 回归404错误页面 Why Firefox returns 404 error page
  • Mod Rewrite,将参数从 URL1 传递到 URL2

    我正在尝试重写以下网址 test php par1 foo par2 bar Into newtest php hidden par blah par1 foo par2 bar 我有这条规则 但不起作用 RewriteRule test
  • 如何简化url

    你好 在我的网站中 我发现他们的网址非常简单 例如 http example com questions 4486620 randomaccessfile probelm http example com questions 4486620
  • 在 Apache 中使用 mod_rewrite 处理中文字符

    我无法找到有关使用中文字符的 Apache mod rewriting 的信息 我能找到的所有信息都与数字有关 我想重写 character php character 宠 其中字符是搜索结果 因此会有所不同 character 宠 这是我
  • 多个App服务使用同一个域名

    我们有一个场景 我们有多个 azure 应用程序服务 并且部署了 Web API 但是我们需要所有应用程序服务使用相同的域名 而不是子域 例如http example com api1 http example com api1在一个应用程
  • URL 重写查询数据库?

    我试图了解 URL 重写的工作原理 我有以下链接 mysite com profile php id 23 我想用用户的名字和姓氏重写上面的网址 mysite com directory liam gallagher 然而 根据我读到的内容
  • 多个域到单个网站

    我有多个域指向同一个网站 FFFF com FFFF ca FFFF org 等 重写 FFFF com 所有传入流量的最佳方法是什么 URL 重写还是 301 寻找最佳实践 这两个将在 htaccess 中处理 对吧 Thanks 在这种
  • 如何使用 wampserver 在本地系统上将 URL 从“localhost”更改为其他内容?

    在 Windows 计算机上 有一个系统在本地 wampserver 上运行 但当应用程序在 localhost 上运行时 URL 却另有说明 虽然我希望基于目录结构的 URL 是这样的 http localhost pro include

随机推荐

  • 如何从字符串中删除
    标签等?

    我需要脱掉所有 br 和所有 引号 和所有 和 并仅用空格替换它们 我怎样才能做到这一点 PHP 语言 我已经尝试过这个 br description preg replace br description 但它又回来了 lt gt 代替每
  • Microsoft.Office.Interop.* 版本 12 和 14 之间有什么区别?

    我已经安装了 Visual Studio 2010 和 Office 2007 当我转到 添加引用 并搜索 Office Interop 时 我可以看到每个引用在版本 12 和 14 中出现两次 我最初尝试了版本 14Microsoft O
  • 如何在 Visual Studio 2010 上安装 Symbolic C++?

    我有Symbolic C 可以与V集成的版本 没有关于如何安装它的文档 我从这个网站得到它 它有它如何工作的示例 http issc uj ac za symbolic symbolic html http issc uj ac za sy
  • 使用来自多个(虚拟)机器的单个 emacs 实例

    我喜欢 emacsclient 它允许我使用单个 Emacs 框架进行所有编辑 甚至当程序想要打开编辑器时 即export EDITOR emacsclient 我也想让它在虚拟机上也能这样工作 我可以在我的单帧设置中使用 Tramp 来使
  • MouseLeftButtonDown 没有被解雇

    我有一个从 UserControl 类派生的 WPF 用户控件 MouseLeftButtonDown 根本没有被控件触发 我添加了事件处理程序并尝试如下 我想它是在其他地方处理的 如何调试并找到它在哪里得到处理 任何帮助都值得赞赏 pro
  • 安装了JDK但没有javap?

    我安装了 JDK 10 0 2 在程序的类文件文件夹中打开 cmd 然后尝试命令 javap Simulation class 我收到错误消息 未找到命令 javap 我做错了什么 你必须有你的 JAVA HOME bin目录添加到系统PA
  • Firebase Admin SDK 是否执行任何缓存?

    我最近一直在使用带有云功能的Firebase 这个问题突然出现在我的脑海中 如果在我的云函数中 使用 Firebase Admin SDK 在单个函数调用中对同一文档执行多次读取 它会算作数据库中的多次读取还是会缓存数据 Example a
  • 在一个项目中混合 Web Api 和 ASP.Net MVC 页面

    如何在一个项目中混合 Web API 和 ASP Net MVC 页面 例如 我有模型用户 我希望在同一个项目中 有一个 ApiController 可以响应所有用于管理用户实体的 HTTP 动词 同时有一个 Controller 可以根据
  • Eclipse 中有效 HTML5 属性的警告

    我使用 Eclipse 并编写包含 HTML5 内容的 jsp 文件 所以我有例如这一行 div class test 在 Eclipse 中我收到警告 Undefined attribute name data role 需要做什么才能使
  • 如何将我的 nib 文件的所有者设置为另一个 nib 文件中的对象?

    我是 Cocoa 新手 无法将我的 nib 文件拆分为多个 nib 文件 My MainMenu nib包含一个Tracker Controller对象 它是一个子类NSObject 它有一个出口Show Tracker我的主菜单中的菜单项
  • 在 Ruby 中解析文本

    我正在编写一个用于导入 SketchUp 组件信息的脚本 他们的帮助页面上有一位非常乐于助人的人 帮助我创建了一个可用于 编辑 的逐行文本文件的文件 现在我准备将其提升到一个新的水平 直接从 FreePCB 创建的原始文件导入 我希望使用的
  • 在 Rust 中,用于连接任意数量的组件来构建路径的宏是什么?

    在Python中 有一个函数叫做os path join 允许使用操作系统的路径分隔符将多个字符串连接到一个路径中 在 Rust 中 只有一个函数join 将字符串或路径附加到现有路径 这个问题无法用普通函数解决 因为普通函数需要有固定数量
  • 我可以在 SQL Server 2005 中使用 MERGE 语句吗?

    我正在使用 SQL Server 2005 我想在 SQL Server 2005 中的单个查询中创建 MERGE 语句或概念 这可能吗 MERGE http technet microsoft com en us library bb51
  • 无需数学函数或对数函数即可查找数字是否为 2 的幂

    我想知道用户输入的数字是否是2的幂 我的代码不起作用 public class power of two public static void main String args Scanner in new Scanner System i
  • Android Studio Preview 3.0 - 运行即时应用程序时应用程序安装失败

    我是运行即时应用程序的新手 我创建了一个新的 Hello World 项目 具有即时应用程序支持 根据安卓开发者文档 https developer android com topic instant apps getting starte
  • 连接两个变量

    这就是我想做的 errmsg 1 Please make changes to your post errmsg 2 Please make changes to your post image error 1 echo errmsg er
  • Android 遥控器如何与 Google TV 配合使用

    关于如何做的任何想法Google TVAndroid 平台上的远程应用程序可以工作 我今天刚尝试过 通过 Wi Fi 进行配对后 它就开始工作了 其背后的理念是什么 好像没有使用Bluetooth 那么在电视上不安装任何组件的情况下它是如何
  • Visual Studio 键绑定配置文件

    Visual Studio 是否有用于其键绑定的人类可编辑的配置文件 选项 gt 环境 gt 键盘 对话框已完全损坏 或者至少使用起来太繁琐 并且自 Visual C 5 以来一直如此 我真的只想转到 Visual Studio 保存键绑定
  • MySQL 8 的 Hibernate 方言?

    MySQL 8 有 Hibernate 方言吗 或者我应该使用 Hibernate 附带的 org hibernate dialect MySQL57Dialect 吗 我正在使用休眠5 2 16 MySQL8Dialect org hib
  • 在 IIS URL Rewrite 2.0 中,为什么 HTTP_HOST 包含端口号?

    我正在尝试使用IIS URL 重写 2 0 http www iis net downloads microsoft url rewrite在 Windows 8 1 上使用 IIS 8 5 根据从重写规则访问 URL 部分 http ww