Einfache Erklärung und Lösung des Umschreibens in PHP-Laufzeit und http-Web

藏色散人
Freigeben: 2023-04-06 16:50:01
nach vorne
2813 Leute haben es durchsucht

本文针对函数计算的 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;
}
Nach dem Login kopieren

php url rewrite 简单实现

<?php
function rewrite_urls($s) 
{
    $in = array(
      &#39;|^/post/(\\w+)/(\\d+)$|&#39;,
      &#39;|^/(\\w+)$|&#39;
    );
    $out = array(
      &#39;/post.php?class=$1&id=$2&#39;,
      &#39;/index.php?sub=$1&#39;,
    
    );
    return preg_replace($in, $out, $s); 
}
$post_url = &#39;/post/literatrue/34&#39;;
echo rewrite_urls($post_url) .PHP_EOL;
$index_url = &#39;/admin&#39;;
echo rewrite_urls($index_url) .PHP_EOL;
Nach dem Login kopieren

执行输出结果:

/post.php?class=literatrue&id=34
/index.php?sub=admin
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonEinfache Erklärung und Lösung des Umschreibens in PHP-Laufzeit und http-Web. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:aliyun.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage