如何让nginx支持thinkphp nginx 404框架

qianghong000 的BLOG
用户名:qianghong000
文章数:145
访问量:16805
注册日期:
阅读量:5863
阅读量:12276
阅读量:381350
阅读量:1073413
51CTO推荐博文
一、nginx不支持thinkphp的原因ThinkPHP支持通过PATHINFO和URL&rewrite的方式来提供友好的URL,只需要在配置文件中设置&'URL_MODEL'&=&&2&即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以nginx默认情况下是不支持thinkphp的。不过我们可以通过修改nginx的配置文件来让其支持thinkphp。二、让nginx支持pathinfo,支持thinkphp1、打开Nginx的配置文件,注释以下红色字体内容:http {&&include & & & mime. & &#此项不加则无法加载CSS、js页面样式& server {&&&&&&&&listen & & & 80;&&&&&&&&server_name &&&&&&&&&& & location / {&&&&&&&&&&index &index.php index.html index.# & && &location ~ .*\.(php|php5)?$# & && & & & & & & & {# & && & & & & & & & & & & & fastcgi_pass 127.0.0.1:9000;# & && & & & & & & & & & & & fastcgi_index index.# & && & & & & & & & & & & & include fastcgi.# & && & & & & & & & }&& &location /status {& & & & & & & & stub_& & & & & & & & #access_log && & & & & & & & }& & location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$& & & & & & & & {& & & & & & & & & & & & expires & & &30d;& & & & & & & & }& & location ~ .*\.(js|css)?$& & & & & & & & {& & & & & & & & & & & & expires & & &12h;& & & & & & & & }& && & & & #access_& & & }include &vhost/*.}2、对注释的内容进行重写,绿色字体部分!http {&&include & & & mime. & &#此项不加则无法加载CSS、js页面样式& server {&&&&&&&&listen & & & 80;&&&&&&&&server_name &&&&&&&&&& & location / {& & & & & &index &index.php index.html index.&&&&&&&&#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则&&&&&&&&if (!-e $request_filename)&&&&&&&& &{&&&&&&&&& & &#地址作为将参数rewrite到index.php上。&&&&&&&&& & &rewrite ^/(.*)$ /index.php/$1;&&&&&&&&& & &#若是子目录则使用下面这句,将subdir改成目录名称即可。&&&&&&&&& & &#rewrite ^/subdir/(.*)$ /subdir/index.php/$1;&&&&&&&&& & &}&&&&&&&&}&&&&&&&&#proxy the php scripts to php-fpm& & location ~ \.php {&&&&&&&&include fastcgi.&&&&&&&&##pathinfo支持start&&&&&&&&#定义变量 $path_info ,用于存放pathinfo信息& & & & set $path_info "";& & & & #定义变量 $real_script_name,用于存放真实地址& & & & set $real_script_name $fastcgi_script_& & & & #如果地址与引号内的正则表达式匹配& & & & if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {& & & & & & #将文件地址赋值给变量 $real_script_name& & & & & & set $real_script_name $1;& & & & & & #将文件地址后的参数赋值给变量 $path_info& & & & & & set $path_info $2;& & & & & & & }& & & & #配置fastcgi的一些参数& & & & fastcgi_param SCRIPT_FILENAME $document_root$real_script_& & & & fastcgi_param SCRIPT_NAME $real_script_& & & & fastcgi_param PATH_INFO $path_& & & & ###pathinfo支持end& & & & fastcgi_intercept_& & & & fastcgi_pass & 127.0.0.1:9000;& & & & & &}&& location /status {& & & & & & & & stub_& & & & & & & & #access_log && & & & & & & & }& & location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$& & & & & & & & {& & & & & & & & & & & & expires & & &30d;& & & & & & & & }& & location ~ .*\.(js|css)?$& & & & & & & & {& & & & & & & & & & & & expires & & &12h;& & & & & & & & }& && & & & #access_& & & }include &vhost/*.}本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)基于thinkphp框架开发的代码,nginx需要的配置_ThinkPHP_ThinkSAAS
基于thinkphp框架开发的代码,nginx需要的配置
基于thinkphp框架开发的代码,nginx需要的配置
内容来源: 网络
开发的人跟我说基于thinkphp框架开发的代码在apache下能用,在nginx下为什么用不了呢,总是提示404的错误,原来apache默认就支持thinkphp等所需的PATH_INFO,而nginx不可以,那么接下来,我们就配置一下nginx,让他支持PATH_INFO,我是这么做的:
1,更改php.ini
首先php.ini的配置中把cgi.fix_pathinfo=0
cgi.fix_pathinfo=1
2,改nginx配置文件中php的location如下:
location ~ .php {
fastcgi_pass unix:/dev/shm/php-fcgi.
fastcgi_index index.
set $path_info "";
set $real_script_name $fastcgi_script_
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
fastcgi_param SCRIPT_FILENAME /data/www/wwwroot$real_script_
fastcgi_param SCRIPT_NAME $real_script_
fastcgi_param PATH_INFO $path_
/usr/local/nginx/conf/fastcgi_
以前是这样的:
location ~ .php$ {
include fastcgi_
fastcgi_pass
unix:/tmp/php-fcgi.
fastcgi_index index.
fastcgi_param SCRIPT_FILENAME /data/www/wwwroot$fastcgi_script_
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信Nginx配置支持TP框架_ThinkPHP_ThinkSAAS
Nginx配置支持TP框架
Nginx配置支持TP框架
内容来源: 网络
TP框架配置中默认URL_MODEL=1,而Nginx默认是不支持PATHINFO的。如果我们只想跑起来tp框架,很简单,只需到更改TP配置,设置URL_MODEL=3(兼容模式)。但是如果要让Nginx支持ThinkPHP PATHINFO需要做如下配置:1、设置ThinkPHP URL模式URL_MODEL=1; 2、修改nginx配置文件(红色部分更改称相应的内容)server{listen 80;server_index index.root /Users/just/git/myblog;location / {if (!-e $request_filename) {rewrite
/index.php/$1}}location ~ .php {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.include fastcgi_set $real_script_name $fastcgi_script_if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {set $real_script_name $1;set $path_info $2;}fastcgi_param SCRIPT_FILENAME $document_root$real_script_fastcgi_param SCRIPT_NAME $real_script_fastcgi_param PATH_INFO $path_}}3、保存nginx配置并重启
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信修改thinkphp让他可以在nginx上运行
来源:易贤网&& 阅读:1670 次&&日期:
温馨提示:易贤网小编为您整理了“修改thinkphp让他可以在nginx上运行”,方便广大网友查阅!
最近在用thinkphp做一个项目,基本完成后部署到nginx服务器上才发觉nginx是不支持pathinfo的,网上搜索了别人的解决方法,有两种思路:
1、修改thinkphp让他可以在nginx上运行
2、修改nginx让它支持pathinfo
网上说nginx开启pathinfo是有一定风险的,能不用pathinfo最好不用,所以还是折腾thinkphp吧,个人觉得这种方法相对第2种方法来得简单
修改nginx的rewrite
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1
然后项目配置下url模式改为2
'URL_MODEL'=&2,
如果是多个项目,布署项目时要把项目布署到目录里,如后台的项目放到Admin目录里,那么在nginx的rewrite里再写一条
location /Admin/ {
if (!-e $request_filename) {
rewrite ^/Admin/(.*)$ /Admin/index.php?s=$1
最后也不要忘记把这个项目的url模式改为2。
更多信息请查看
更多信息请查看
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
易贤网手机网站地址:
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
相关阅读 & & &
&nbsp&nbsp&nbsp &nbsp&nbsp&nbsp会员注册
本站不参与评论!()
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 thinkphp5 nginx 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信