• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

node.js – PHP伪静态怎么实现

php 搞代码 4年前 (2022-01-25) 16次浏览 已收录 0个评论
文章目录[隐藏]

求教 怎么实现 , 比如

https://www.xxx.com/img/1015308c0ebce716.jpg

其中 1015308c0ebce716.jpg 是个文件名


简单点说就是 , 怎么实现 这个伪静态 . 只要 index.php 这个文件接收到 xx.xxx 这个参数就可以了


<code>$_SERVER[ORIG_PATH_INFO]// 用这个吗 ?</code>

考虑到很多文件 , 这样的片状存储肯定不好管理 .

于是想在上传的过程中 ,用唯一id当做文件名 . 以时间存储到不同文件夹里

+本文来源gao@daima#com搞(%代@#码网

搞代gaodaima码

回复内容:

求教 怎么实现 , 比如

https://www.xxx.com/img/1015308c0ebce716.jpg

其中 1015308c0ebce716.jpg 是个文件名


简单点说就是 , 怎么实现 这个伪静态 . 只要 index.php 这个文件接收到 xx.xxx 这个参数就可以了


<code>$_SERVER[ORIG_PATH_INFO]// 用这个吗 ?</code>

考虑到很多文件 , 这样的片状存储肯定不好管理 .

于是想在上传的过程中 ,用唯一id当做文件名 . 以时间存储到不同文件夹里

「伪静态」其实是一个伪概念,其实就是通过某种技术,让 client (通常是浏览器)认为其访问的是「静态」资源,如题主在描述中提到的 https://www.xxx.com/img/1015308c0ebce716.jpg 是由某个 PHP 脚本所返回的「动态」内容,而为了做到这一点,至少需要满足这么几个条件:

  1. URL 看起来像是一个静态文件
  2. Content-Type告诉浏览器是一个静态文件,如提到的JPEG图片对应的便是 image/jpeg

那么一个一个来解决,这里我们假设采用了 PHP 与 nginx:

  1. 假如应用程序中 /img/1015308c0ebce716.jpg 本身是一个 PHP 文件,并且告诉 nginx 在处理这个文件的时候,交给 PHP 去处理,问题便解决了。显然,这并不是一个特别好的主意,这个设计不但让我们自己摸不着头脑,限制了应用程序本身的架构,并且参数传递显然成了硬伤。那么如果我们可以在访问 /img/1015308c0ebce716.jpg 的时候,把请求交给某个 PHP 脚本,并且可以取 URL 中的一部分作为参数,问题便优雅的解决了。事实上,nginx 的 ngx_http_rewrite_module 就可以做到这一点。( apache 可以使用 mod_rewrite ) 。例如,假设/img/1015308c0ebce716.jpg 对应的处理脚本是 /index.php?mod=image&id=1015308c0ebce716,并且 id 作为参数存在,那么:

    <code>nginx</code><code>server {    root /path/to/app;    rewrite ^/img/([a-z\d]+)\.jpg$ /index.php?mod=image&id=$1 last;    location /index.php {        ...        ...    }}</code>
  2. 解决了上一个问题,这个就很好处理,如果是 PHP 脚本的话,在这里直接用 header('Content-Type: image/jpeg')就好。

最后,题主所提到的 $_SERVER[ORIG_PATH_INFO] 可以作为给 PHP 脚本传参的一个形式出现,甚至作为架构上一个对 URL 整体设计实现中的一环,这里可以参考一下 ThinkPHP 的实现 https://github.com/liu21st/thinkphp/blob/65dd170184db6109301b1d2e3cf3f…。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:node.js – PHP伪静态怎么实现

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址