Apache伪静态出现页面无法正常访问处理
-
默认规则:
apacheRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
- 这条规则适用于Apache采用模块化运行方式的情况。
- 当请求URL不是目录或文件时,将所有请求重写为
index.php/$1
。
-
备用规则:
apacheRewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
- 这条规则适用于Apache采用FastCGI运行方式的情况。
- 当请求URL不是目录或文件时,将所有请求重写为
index.php
,并将路径信息存储在PATH_INFO
变量中。
为什么会出现“No input file specified.”
-
模块化运行方式:
- Apache默认采用模块化运行方式(mod_php),在这种模式下,可以直接处理PHP脚本。
- 默认规则适用于这种情况。
-
FastCGI运行方式:
- 当Apache采用FastCGI模式运行PHP时,需要通过FastCGI接口与PHP通信。
- FastCGI模式下,
PATH_INFO
变量需要传递给PHP脚本,否则会出现“No input file specified.”错误。
解决方案
1. 检查Apache运行模式
- 确认Apache运行模式:
- 查看Apache的
httpd.conf
或php.ini
配置文件,确认Apache是否采用FastCGI模式运行PHP。 - 如果使用FastCGI模式,需要启用备用规则。
- 查看Apache的
2. 修改伪静态规则
- 启用备用规则:
- 注释掉默认规则:
apache
# RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
- 启用备用规则:
apache
RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
- 注释掉默认规则:
扫码添加技术【解决问题】
专注企业网站建设、网站安全16年。
承接:企业网站建设、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18440018