点击蓝字关注我们!每天获取最新的编程小知识!

源 / php中文网      源 / www.php.cn

本文针对函数计算的 php runtime web 相关运用开发, 提供一个简单实现url rewrite的方案,在介绍方案之前,我们先看看相关的几个概念: 伪静态页面,动态页面,rewrite.

伪静态

静态网页

比如xxx网站上放了一个abc.html文件,你想访问它就直接输入xxx. com/abc.html。Web服务器看到这样的地址就直接找到这个文件输出给客户端。

动态网页

假如你想做一个显示当前时间的页面,那么就可以写个PHP文件,然后访问xxx. com/abc.php。Web服务器看到这样的地址,找到abc.php这个文件,会交给PHP执行后返回给客户端。而动态网页往往要输入参数,所以地址就变成xxx. com/abc.php?a=1&b=2。

搜索引擎比较烦这种带问号的动态网页,因为参数可以随便加,而返回内容却不变,所以会对这种网页降权。于是有了mod_rewrite,它可以重新映射地址。

rewrite

比如当前这个页面的地址 http://www.xxx.com/post/20153311,Web服务器收到请求后会重新映射为 www.xxx.com/post.php?id=20153311,然后再执行那个PHP程序。(以上网址均为假设)这样,在内部不改变的情况下,对外呈现出来的网址变成了没有问号的象静态网页的网址一样。于是有人给起了个名字叫“伪静态”。其实也没什么伪的,就是没有问号的静态网址,让搜索引擎舒服点而已。

函数计算 php runtime 简单实现 rewrite 的一种方法

先以简单的nginx 中的一个简单的 rewrite 为例:

location ~ ^/(\w+)$ {

    rewrite /index.php?sub=$1;

}

location ~ ^/post/(\w+)/(\d+)$ {

    rewrite /post.php?class=$1&id=$2;

}

php url rewrite 简单实现

function rewrite_urls($s)

{

    $in = array(

      '|^/post/(\\w+)/(\\d+)$|',

      '|^/(\\w+)$|'

    );

    $out = array(

      '/post.php?class=$1&id=$2',

      '/index.php?sub=$1',

    );

    return preg_replace($in, $out, $s);

}

$post_url = '/post/literatrue/34';

echo rewrite_urls($post_url) .PHP_EOL;

$index_url = '/admin';

echo rewrite_urls($index_url) .PHP_EOL;

执行输出结果:

/post.php?class=literatrue&id=34

/index.php?sub=admin

因此在使用 php runtime的时候,根据收到请求的uri(假设是/post/literatrue/34), 执行 rewrite_urls 函数(rewrite 规则填写在这个函数的 $in$out 中), 然后将 rewrite 后的 uri (/post.php?class=literatrue&id=34) 作为调用 fcPhpCgiProxy.requestPhpCgi 函数时,传入参数 $fastCgiParams 的一对 key-value

-END-

声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!

php伪静态后无法获得url中参数_php runtime、http web中rewrite浅解和方案相关推荐

  1. java web工程中如何添加图片_java web中如何添加图片

    java web中如何添加图片 对于java可视化界面插入背景图片只需要background-image:url(图片路径)就行,而对于web项目中,并非如此 效果如下: 我们就需要在jsp页面中写J ...

  2. java中404什么意思_java web中关于404问题的根本来源与解决

    404问题对于刚刚接触web开发的新手朋友来说,算得上是头痛的问题.其实这个问题很简单.根本原因就是服务器找不到目标页面(或者说成找不到目web资源)而产生的.既然找不到资源,那么很大原因就是访问路径 ...

  3. 页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递

    同学们大家好,我是小伊同学,上一节课我们讲解了全局数据的读写方法,那么在页面间同样需要数据交互,今天我们就来学习这部分内容. 在微信小程序中,我们常常需要将数据在页面之间进行传递,比如用户的身份信息, ...

  4. java 中showinfo方法,jmockito模拟方法中参数如何指定

    在做单元测试的时候,经常会遇到mock类的方法的情景.在写单测过程中,遇到一些问题,比较困惑,便做了一些测试,并得出一个结论: 在mock类的方法时,当符合 (mock参数).equals(实际调用过 ...

  5. 参数方程中参数的意义: 参数方程定义: 什么是参数方程: 参数方程与普通方程的公式

    目录 参数方程中参数的意义: 参数方程定义: 什么是参数方程: 参数方程与普通方程的公式: 举例: 参数方程: 参数方程中参数的意义: 参数方程中t的几何意义要看具体的曲线方程了,一般都是长度,角度等 ...

  6. EasyExcel在项目中的应用-在web中导出带下拉框和批注的excel文件

    前言 ​ 好长一段时间没有更新博客了,最近刚刚找到实习工作,接触了企业中的项目,在这段时间的实习过程中,终于知道了企业级项目的体量和业务难度跟之前的小项目是完全不同的.10多天的适应期也逐渐让我找到了 ...

  7. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))

    捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定   ...

  8. vue取url路径传参_vue不通过路由直接获取url中参数的方法示例

    前言 众所周知vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接在url后面拼接?mid=100的方 ...

  9. 获取url中的参数方法,避免#的干扰,删除url指定参数(vue hash模式 有#删除指定参数问题)

    function urlParse() {let url = window.location.search;let obj = {};let reg = /[?&][^?&]+=[^? ...

最新文章

  1. css笔记 - transition学习笔记(二)
  2. 特征工程之离散变量处理
  3. Android 手机影音 开发过程记录(六)
  4. 鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page
  5. html的ideo标签兼容那些浏览器,关于video 标签的浏览器支持
  6. linux php版本升级_玩转Linux,介绍一个强大的Linux服务器管理面板,比宝塔更强...
  7. 关于c/c++/obj-c的混合使用 (2010-06-22 10:05:33)
  8. art-template辅助函数和子模板
  9. 动手学无人驾驶(3):基于激光雷达3D多目标追踪
  10. C++之指针探究(十八):typedef结合结构体指针
  11. 如何使用git命令将本地项目上传到Gitlab上
  12. html 前端传数据流,jquery – 使用Node.js流式传输数据
  13. Ubuntu20.4:安装OpenCV4,配置vscode+CMake作为基本开发环境
  14. 用python祝节日快乐_节日快乐祝福语有哪些?
  15. Pruning Filters for Efficient ConvNets详解
  16. 华东地区响应最快的DNS服务排名
  17. 巴别塔圣经_承认巴别塔
  18. c#文件操作代码段保存
  19. 计算机教师的人生格言,100句教师人生格言大全
  20. 3Dmax制作简易沙发

热门文章

  1. modbus 0x06 连续写_这篇很实用,看完学会MODBUS的应用及编程
  2. SOL注入——HTTP头部注入(2)(七)
  3. 手机写python脚本_手机需要,哪位大神帮编个Python脚本,谢谢
  4. swiper.js使用心得
  5. log4cplus导致主进程不能退出问题解决
  6. Android开发之Android WIFI ADB(ADB WIFI)无线调试的技巧
  7. sqlserver 库服务器导数据
  8. php7中使用 xhprof 分析
  9. (二)Linux下的crontab定时执行任务命令详解
  10. Spring Security认证过程