您现在的位置是:知识 >>正文
php后缀
知识3人已围观
简介打开网站根目录,看到一个文件叫 index.php,另一个叫 index.html。服务器默认先读哪个?很多人以为先读 .html。错了。Apache 的 DirectoryIndex 指令如果写成 ...
打开网站根目录,看到一个文件叫 index.php,另一个叫 index.html。服务器默认先读哪个?很多人以为先读 .html。错了。Apache 的 DirectoryIndex 指令如果写成 index.html index.php,那 .html 优先。但绝大多数 PHP 虚拟主机默认配置是 index.php index.html。所以 .php 后缀的文件被优先执行。这个细节直接影响你上传的静态首页会不会被动态页面覆盖。
我2015年接手过一个企业站,首页是 index.html,后来加了新闻系统,生成了 index.php。结果首页永远显示新闻列表,原来的企业介绍页面死活出不来。客户急得打电话,说“网站被黑了”。其实就是后缀优先级问题。把 index.html 改名为 index_static.html,问题消失。后缀不只是文件名的一部分,它决定了服务器怎么处理这个文件。
.php 后缀告诉 Apache 或 Nginx:这个文件先交给 PHP 解释器。解释器把 <?php ... ?> 之间的代码跑一遍,把输出结果和 HTML 拼在一起,再发给浏览器。浏览器看到的永远是纯 HTML,它根本不知道 PHP 存在。你右键查看网页源代码,找不到任何 <?php。这是最基础的隔离。但很多人写 PHP 时忘了这一点,在 PHP 文件里直接写 HTML,然后奇怪为什么循环里的变量没生效。因为那段 HTML 根本不在 PHP 标签内。
后缀还能被伪造。有人上传一个文件叫 shell.php.jpg。如果服务器配置不当,比如 AddHandler application/x-httpd-php .jpg,那这个图片文件里的 PHP 代码就会被执行。这是经典漏洞。我见过一个论坛,允许上传头像,后端只检查了 MIME 类型是 image/jpeg,却没检查后缀。攻击者上传 avatar.php,MIME 伪造为 image/jpeg,然后直接访问 /uploads/avatar.php,拿到 webshell。修复方法很简单:禁止上传目录执行 PHP。在 .htaccess 里写 php_flag engine off,或者用 Nginx 的 location ~* /uploads/.*\.php$ { deny all; }。
另一个常见问题:URL 里带 .php 好不好?从 SEO 角度,example.com/about.php 和 example.com/about 哪个好?后者更干净。但实现后者需要 URL 重写。Apache 用 mod_rewrite,Nginx 用 try_files。我自己的博客就把所有 .php 后缀去掉了。方法是在 nginx.conf 里加 location / { try_files $uri $uri/ $uri.php?$query_string; }。这样访问 /contact 时,Nginx 会去找 contact.php。但注意,如果目录下同时存在 contact 目录和 contact.php 文件,优先匹配目录。这个坑我踩过,后来把目录名改了。
还有安全层面的 .php 后缀。很多老教程让你把配置文件命名为 config.php,然后放在 Web 根目录下。这很危险。如果 PHP 解析器挂了,或者服务器配置错误,config.php 会被当纯文本下载,数据库密码直接泄露。正确做法是把配置文件放在 Web 根目录之外,比如 /var/www/config/config.php,然后在 index.php 里用 require '../config/config.php'。后缀没变,但位置变了,安全性完全不同。
最后说一个观察。现在很多新项目用 .php 后缀越来越少。Laravel 的路由全写在 routes/web.php 里,但对外暴露的 URL 没有 .php。WordPress 也是,永久链接可以设成 /2024/01/hello-world/。但底层文件依然是 index.php、wp-load.php。后缀从“用户可见”变成了“内部约定”。你打开 WordPress 的 wp-admin 目录,全是 .php 文件。它们不直接对外,而是通过 admin.php 统一入口。这是一种进步。后缀不再暴露技术栈,也不再是 URL 的一部分。但理解 .php 后缀怎么工作,仍然是你排查 500 错误、文件上传漏洞、URL 重写问题的基本功。
Tags:
相关文章
笔记本电脑维修视频全套教程免费
知识笔记本电脑维修,听起来像是一门需要科班出身才能掌握的手艺。实际上,超过七成的常见故障,比如清灰换硅脂、更换键盘、修复松动电源接口,靠的只是胆大心细和一把趁手的螺丝刀。我见过太多人,机器一坏就往维修店跑 ...
【知识】
阅读更多网安备案号
知识工信部备案和网安备案,很多人以为是一回事。真不是。 我去年给一个客户搭了个电商网站,域名和服务器都在国内,工信部ICP备案顺利下来,网站正常上线。结果上线第三天,接到当地网安大队的电话,语气挺客气:“ ...
【知识】
阅读更多js查找页面所有name属性标签
知识js查找页面所有name属性标签 直接说结论:document.getElementsByName() 是唯一原生支持按 name 查找的 API,但它只认表单元素input、select、text ...
【知识】
阅读更多