php runtime 中 http web 中 rewrite 浅解和方案

本文涉及的产品
简介: 本文针对函数计算的 php runtime 的web运用开发, 提供一个简单实现url rewrite的方案

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

php runtime FAQ 列表

伪静态

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

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

rewrite

比如当前这个页面的地址 http://www.yunqi.com/post/20153311,Web服务器收到请求后会重新映射为 www.yunqi.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 简单实现

<?php

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; 有关 fcPhpCgiProxy 可以参考 #683415#640912 介绍 fcPhpCgiProxy 的部分。

参考:

https://www.zhihu.com/question/20153311/answer/14147350
https://www.smashingmagazine.com/2011/11/introduction-to-url-rewriting/

目录
相关文章
|
17小时前
|
SQL 缓存 PHP
PHP 与数据库优化:提升Web应用性能的关键
在Web开发中,PHP作为一种流行的服务器端脚本语言,与数据库密切相关。本文探讨了如何通过PHP与数据库优化来提升Web应用的性能和响应速度。从数据库查询优化、索引的设计到PHP代码编写的最佳实践,我们将深入探讨每个方面如何影响应用的效率和用户体验。
|
3天前
|
安全 编译器 PHP
探索PHP 8的新特性及其对现代Web开发的影响
【6月更文挑战第22天】随着PHP 8的发布,这一广泛使用的服务器端脚本语言迎来了重大升级。本文将深入探讨PHP 8引入的关键新特性,包括JIT编译器、联合类型、命名参数、匹配表达式以及错误处理和异常改进等。这些新特性不仅提升了性能,还增强了类型系统和语言的表达能力,为现代Web开发带来了新的机遇和挑战。我们将分析这些变化如何影响编码实践,优化策略,并讨论开发者如何适应这些变革以构建更快、更安全、更易于维护的应用程序。
|
8天前
|
前端开发 JavaScript PHP
PHP与现代Web开发:探索PHP的持续演变
在动态Web开发的舞台上,PHP一直是一个不可或缺的角色。从早期的简单个人网页到复杂的企业级应用,PHP经历了无数次变革,以适应不断变化的技术需求。本文将带您了解PHP如何保持其在Web开发中的核心地位,以及它如何应对新兴技术的挑战。
|
9天前
|
安全 编译器 PHP
PHP 8 的新特性与优化——构建更高效的Web应用程序
PHP 8 是最新的PHP版本,它引入了一系列令人激动的新特性和优化,为开发者提供了更多的工具和功能来构建高效的Web应用程序。本文将介绍PHP 8的一些重要特性,包括 JIT 编译器、新的数据结构、类型系统改进以及错误处理的增强。我们还将探讨如何利用这些新特性和优化,提升Web应用程序的性能和可维护性。
18 0
|
20天前
|
SQL 算法 关系型数据库
PHP在现代Web开发中的角色与挑战
本文深入探讨了PHP编程语言在当前Web开发领域中的应用和面临的挑战。通过分析PHP的历史地位、核心特性以及与其他编程语言的比较,揭示了PHP为何能在竞争激烈的编程环境中保持其相关性。同时,文章也指出了PHP在安全性、性能优化、社区支持等方面需要关注的关键点,为开发者提供了全面的视角。
|
21天前
|
关系型数据库 MySQL PHP
PHP的生命周期:从诞生到现代Web开发
本文将探索PHP的发展历程,从其最初的设计目标到成为现代Web开发的核心语言。我们将深入了解PHP如何适应不断变化的技术环境,并保持其在开发者社区中的受欢迎程度。
|
23天前
|
SQL 前端开发 安全
PHP在现代Web开发中的角色与挑战
【6月更文挑战第3天】本文深入探讨了PHP语言在当前Web开发领域的应用现状,分析了其在面对新兴技术时的适应力和面临的主要挑战。通过对比分析,揭示了PHP保持其流行地位的原因,并展望了其未来的发展方向。
15 1
|
14小时前
|
SQL JSON 前端开发
快速入门Web开发(下)(1)
快速入门Web开发(下)(1)
5 0
|
15小时前
|
JavaScript 程序员 应用服务中间件
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
17 7
|
15小时前
|
JSON 前端开发 Java
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
15 6

热门文章

最新文章