nginx1.14.0配置支持pathinfo和url重写,运行thinkphp5
apache是默认支持pathinfo,而nginx本身是不支持pathinfo
何为pathinfo?请看这条url127.0.0.1/test.php/a/b/c,/a/b/c即为pathinfo
配置pathinfo
经典配置如下:
location ~ \.php${
......
}
配置支持pathinfo
location ~ \.php(.*)${
fastcgi_param PATH_INFO $1;//这条指令是必须添加的
}
配置好pathinfo时可建一个test.php查看自己是否已经成功
<?php
//test.php
echo '<pre>';
print_r($_SERVER);
用127.0.0.1/test.php/a/b/c,进行访问若打印的数组当中存在PATH_INFO则成功!
URL重写
当你配置好了pathinfo时,如果此时你运行thinkphp5,需要这样子访问,127.0.0.1/xxx/public/index.php/xxx/xx,每一次访问都需要携带index.php,这时可通过url的重写将index.php隐藏起来
配置如下
在location / { …. }当中添加下列指令
if (!-e $request_filename) {
rewrite ^/First/public/(.*)$ /First/public/index.php?s=/$1 last;
}
/First/public/index.php,index.php前面有几级的目录就需要添加几级的,例如我的项目在访问当中,是这样子127.0.0.1/First/public/index.php/…….,则需要添加First/public;
此内容参考各大网站、ThinkPHP官方手册以及私人博客,若有不合理之处,请各位博友指出