当前位置:首页 > 编程开发 > PHP > 正文内容

Nginx/Apache支持PATH_INFO模式

Codefans4年前 (2021-10-29)PHP1905

默认情况下,nginx和apache是不支持path_info的,我们需要做些配置让它支持。

首先需要启用cgi.fix_pathinfo——修改php配置文件php.ini,将;cgi.fix_pathinfo=1前面的冒号;去掉,重启php服务。然后再配置Nginx或Apache。

Nginx


配置说明:

  • 修改Nginx配置文件nginx.conf

  • ~ \.php改为~ \.php(.*),因为要接收.php后面的参数,不能让它被当做目录处理。

  • 添加fastcgi_split_path_info,该参数后面需指定正则表达式,而且必须要有两个捕获,第一个捕获将会重新赋值给$fastcgi_script_name,第二个捕获将会重新赋值给$fastcgi_path_info

  • 添加fastcgi_param PATH_INFO,值为$fastcgi_path_info

  • 重启Nginx服务。

配置示例: 为了醒目,修改的3处加了反引号( ` )做高亮处理,实际使用时需去掉反引号。

location ~ \.php`(.*)`$ {     
root           /var/www/nginx/html;     
fastcgi_pass  127.0.0.1:9000;     
fastcgi_index  index.php;     
`fastcgi_split_path_info  ^(.+\.php)(.*)$;`     
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;     
`fastcgi_param  PATH_INFO $fastcgi_path_info;`   include fastcgi_params; 
}

Apache


配置说明:

  • 修改Apache配置文件httpd.conf

  • 搜索Directory标签,在标签里最后添加AcceptPathInfo On,并修改标签里的AllowOverride NoneAllowOverride All

  • 搜索LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的#

  • 重启Apache服务。

  • 项目根目录添加.htaccess文件:

  • RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*) 
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]


扫描二维码推送至手机访问。

版权声明:本文由图慧网发布,如需转载请注明出处。

本文链接:http://www.tuh8.com/index.php?mod=mall&act=view&id=20

分享给朋友:

“Nginx/Apache支持PATH_INFO模式” 的相关文章

阿里云虚拟主机 session_start(): Failed to initialize storage module 解决办法

今天更新了一下自己的代码框架时,然后后台就提示登陆不了,报错如下:Failed to initialize storage module。解决方法有两种如下:1。在报错的文件里的session start();之前加入如下代码:ini_set(‘session.save_handler’, ‘fil...

php中命名空间(namespace)的作用和使用

php中命名空间(namespace)的作用和使用

1.命名空间的作用:在PHP中函数、类、常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间. 其实不仅仅是php,其他语言也有类似的使用。比如JavaScript中:我们来详细的讲解一下PHP中的命名空间:语法:namespace 空间名\空间名;说明: 用于定义空间名;如果一个php...

phpexcel导出文件内容空白或错误原因之一(存在乱码字符)的解决办法

public function illegal_unicode($str='') {     $txtcode=explode('\u',str_replace("\""...

解决PHP中json_encode自动编码中文的问题

第一种:PHP版本高于5.4时,可以使用官方提供的方法,在括号内加一个参数JSON_UNESCAPED_UNICODE$data = json_encode($msg,JSON_UNESCAPED_UNICODE);第二种:所有版本可用方法,具体解决方法就是先将中文编码成url编...