Heim  >  Artikel  >  php教程  >  thinkphp nginx php-fpm url rewrite 导致 404 错误,thinkphpnginx

thinkphp nginx php-fpm url rewrite 导致 404 错误,thinkphpnginx

WBOY
WBOYOriginal
2016-06-13 08:52:13904Durchsuche

thinkphp nginx php-fpm url rewrite 导致 404 错误,thinkphpnginx

thinkphp nginx php-fpm url rewrite 导致 404 错误

之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在centos上以 nginx+php-fpm模式重新部署了thinkphp系统,结果发现诸如

 

 
1 /index.php/home/user/verify

 

此类的url nginx会报404错误,但是改成

 

 
1 /index.php?s=/home/user/verify

 

之后却能够访问,这说明前一种url nginx不支持,那为啥会不支持呢?要解决这个问题首先要明白thinkPHP的几种url模式。

thinkPHP URL模式

1. pathinfo 模式

 

 
1 /index.php/home/user/verify

 

这种url格式,需要服务器支持pathinfo才行

2. rewrite 模式

 

 
1 /?s=/home/user/verify

 

去掉index.php的伪静态模式

3. 兼容模式

普通的模式加s=/参数/或者m=model&a=action

thinkPHP URL模式配置

在文件 /Application/Common/conf.php 中修改 URL_MODEL 的值

 

 
1 'URL_MODEL' => 3

 

nginx pathinfo模式配置

nginx默认是不支持pathinfo模式的,需要手动添加rewrite规则来支持

1. 打开/nginx/conf/vhost目录下的站点配置文件。

2. 在server节点中增加 如下location规则:

 

 
1 2 3 4 5 6 7 8 9 10 11 #以index.php开头的uri location ~ ^/index.php(.*)         {                 #如果文件或者路径不存在                 if (!-e $request_filename)                 {                         #将pathinfo模式的uri重写成普通模式                         rewrite  ^/index.php(.*)$  /index.php?s=$1  last;                         break;                 }         }

 

3. 重新载入nginx配置信息

 

 
1 service nginx reload

 

Done !

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn