当前位置: 首页 > news >正文

php获取cname解析结果,如何检测来自CNAME子域的传入请求(使用PHP脚本)?

如何检测来自CNAME子域的传入请求(使用PHP脚本)?

我们有一个简单的基于PHP的redirect应用程序。

这是一个例子:

spiderman.com/redirection/redirect-to-marvel/

php脚本在“redirect”文件夹中,假设它将上面的链接redirect到marvel.com

现在…

如果我想创build一个名为try.superman.com的完全不同的子域名,它使用CNAMEredirect到spiderman.com/redirection/,这样如果我打开这个URL:

它将实际转发到spiderman.com/redirection/redirect-to-marvel/这当然会将其转发到marvel.com

简而言之,浏览器将显示try.superman.com/redirect-to-marvel/(由于CNAME),但是我如何在服务器端检测来自CNAMElogging的传入请求并将其路由到正确的本地文件夹?

只需要一些方向…

PHP的dns_get_record + htaccess正确的方向?

一个重要的区别是CNAME和重写/redirect(或虚拟主机)是完全不同的东西,经常会感到困惑。

CNAME是一个DNS实体,所以你可以有多个名字指向一个单一的地址。 例如,bob.example.com是位于1.2.3.4的主机。 然后,您可以为alice.example.com创build一个CNAME,它指向bob进行DNSparsing并返回相同的IP地址。

redirect是一种HTTP方法,用于接收某个位置( http://bob.example.com/index.html )的请求,并向浏览器返回一条指令到其他位置( http://alice.example .com / somewhereelse.html )客户端的浏览器显示。

重写是一种HTTP方法,用于接收某个位置的请求,将其更改,然后将其发送到应答服务器,而不必让客户端的浏览器知道发生了该请求。

一个虚拟主机(虚拟主机等等,对同一个函数有不同的名称)是一种HTTP方法,它允许你通过查看请求的名字来以不同的方式回答请求,通常通过检查HTTP主机头包含在每个请求中 以上述为例:客户端请求http://alice.example.com ,通过DNSparsing为1.2.3.4,因为alice是一个CNAME到bob.example.com。 请求login到相同的IP地址1.2.3.4,但运行在那里的Web服务器用/ alice中的内容而不是/ bob来回答请求。

希望有所帮助

如果你想用PHP来做,你通常会做的是configuration你的web服务器,把所有的子域都提供给一个特定的虚拟主机,这个虚拟主机通过一个路由PHP脚本运行所有的请求,这个脚本将完成redirect。 像这样的东西:

<?php $map = array( "try.superman.com" => array( "/redirect-to-marvel/" => "http://spiderman.com/redirection/redirect-to-marvel/", ), ); if (isset($map[$_SERVER["HTTP_HOST"]]) { if (isset($map[$_SERVER["HTTP_HOST"]][$_SERVER["REQUEST_URI"]])) { header("Location: " . $map[$_SERVER["HTTP_HOST"]][$_SERVER["REQUEST_URI"]]); exit; } } header("Location: http://spiderman.com/404.php");

有很多改进的空间,包括使用mod_rewrite(或者相当于你的web服务器,但是我假设你在这里使用Apache,因为你提到了.htaccess )。

使用PHP,您可以灵活地查询数据库以进行正确的redirect。

相关文章:

  • Ubuntu16.04系统中Nmon的安装
  • CentOS 7 网络磁盘挂载到本地 并测试传输速度
  • 数字图像处理灰度变换java,数字图像处理:图像的灰度变换(Matlab实现)
  • java math 最大,在Java.lang包的Math类中,求最大值的方法为(选一项)
  • 递推算法
  • java方法传递对象,java面向对象-3-方法参数传递
  • iOS 对UIAlertController内的输入框进行输入监听,实时改变确定、取消按钮颜色
  • php url别名,编写PHP程序实现Drupal中pathauto模块的批量生成URL别名(Alias)
  • Spark记录-spark与storm比对与选型(转载)
  • matlab 实验七,matlab 实验七 数字填图问题
  • matlab corrcoef 原理,cov函数 corrcoef函数【Matlab】
  • 彻底解决Oracle unable to create INITIAL extent for segment in tablespace xx
  • php控制台运维工具,试用Grafana:一个自动化运维常用的可视化开源工具
  • C语言博客作业--函数
  • php静态的关键字是,php 延迟静态绑定static关键字
  • Effective Java 笔记(一)
  • Java编程基础24——递归练习
  • jdbc就是这么简单
  • Js基础知识(一) - 变量
  • JS题目及答案整理
  • React16时代,该用什么姿势写 React ?
  • STAR法则
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从输入URL到页面加载发生了什么
  • 坑!为什么View.startAnimation不起作用?
  • 入门到放弃node系列之Hello Word篇
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 怎样选择前端框架
  • 从如何停掉 Promise 链说起
  • #define 用法
  • #微信小程序:微信小程序常见的配置传值
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)appium-desktop定位元素原理
  • ***监测系统的构建(chkrootkit )
  • .bat文件调用java类的main方法
  • .mysql secret在哪_MySQL如何使用索引
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .Net MVC + EF搭建学生管理系统
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 回调、接口回调、 委托
  • .net 验证控件和javaScript的冲突问题
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net的socket示例
  • .NET分布式缓存Memcached从入门到实战
  • @GlobalLock注解作用与原理解析
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [1525]字符统计2 (哈希)SDUT
  • [16/N]论得趣
  • [2010-8-30]