PHP环境下URL跳转正常但所有链接均显示首页内容的原因排查
URL跳转正常但所有链接显示首页的原因分析
一、.htaccess规则的限制与影响
当前服务器的.htaccess文件存在两个核心问题:
- 过度限制PHP文件访问:
FilesMatch规则匹配了所有PHP相关后缀(包括php、PHP、php5等),并设置Deny from all,直接禁止了除index.php外所有PHP业务文件的访问(RewriteRule ^index.php$ - [L]规则让index.php跳过了FilesMatch的限制)。 - 所有非静态请求强制指向index.php:Rewrite规则会将所有不存在的文件/目录请求转发到
index.php,这原本是框架路由的常规逻辑,但结合前面的限制,所有请求最终只能通过index.php处理。
二、index.php被恶意代码篡改
index.php中植入的垃圾代码是导致现象的直接原因:
- 代码开头的
error_reporting(0)关闭了错误输出,隐藏了入侵后的异常信息; - 后续的混淆代码篡改了原有的路由处理逻辑,无论URL携带什么请求参数,都会强制输出首页内容;
- 这类代码通常还包含后门、数据窃取等恶意行为,但直接引发当前问题的是路由逻辑被破坏,无法根据请求加载对应页面。
两者共同作用下,就出现了URL地址能正常跳转显示,但所有请求最终都返回首页内容的异常。
内容的提问来源于stack exchange,提问作者Aniket Pradhan
相关产品推荐
相关产品推荐

