Apache伪静态出现页面无法正常访问处理(1)

wdzsjl 1个月前 (10-10) 阅读数 11 #PbootCMS
  1. 默认规则

    apache
     
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    • 这条规则适用于Apache采用模块化运行方式的情况。
    • 当请求URL不是目录或文件时,将所有请求重写为index.php/$1
  2. 备用规则

    apache
     
    RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
    • 这条规则适用于Apache采用FastCGI运行方式的情况。
    • 当请求URL不是目录或文件时,将所有请求重写为index.php,并将路径信息存储在PATH_INFO变量中。

为什么会出现“No input file specified.”

  1. 模块化运行方式

    • Apache默认采用模块化运行方式(mod_php),在这种模式下,可以直接处理PHP脚本。
    • 默认规则适用于这种情况。
  2. FastCGI运行方式

    • 当Apache采用FastCGI模式运行PHP时,需要通过FastCGI接口与PHP通信。
    • FastCGI模式下,PATH_INFO变量需要传递给PHP脚本,否则会出现“No input file specified.”错误。

解决方案

1. 检查Apache运行模式

  1. 确认Apache运行模式
    • 查看Apache的httpd.confphp.ini配置文件,确认Apache是否采用FastCGI模式运行PHP。
    • 如果使用FastCGI模式,需要启用备用规则。

2. 修改伪静态规则

  1. 启用备用规则
    • 注释掉默认规则:
      apache
       
      # RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    • 启用备用规则:
      apache
       
      RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
wx.jpg ywfw.jpg
热门