nginx下怎么nginx 支持文件下载THinkPHP

location /
{ if (!-e $request_filename)
& & & & rewrite ^(.*)$ /index.php?s=$1
使用如下:
1234567891011121314151617181920212223242526server
& { listen 80;
& & server_ index index.html index.htm index.
& & root &/data/htdocs/wwwroot/ #limit_conn & crawler &20; location /
& & { if (!-e $request_filename)
& & & & & & rewrite ^(.*)$ /index.php?s=$1
& & location ~ .*\.(php|php5)?$
& & { #fastcgi_pass &unix:/tmp/php-cgi. fastcgi_pass 127.0.0.1:9000;
& & & fastcgi_index index.
& & & include fcgi.
& & location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
& & & expires 30d;
& & location ~ .*\.(js|css)?$
& & & expires 1h;
二.Apache方法
网站的根目录下建立文件.htaccess,然后添加如下代码
123RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
猜你也喜欢的:
博主最近怎么不更新文章了
最新日志热评日志随机日志公司有一款即将上线的应用服务端是基于ThinkPHP写的,本地测试无异常,上传到外网服务器后无法连接。这可把我和我的小伙伴们吓死了,怎么回事儿,本地测试都是对的呀!
我和我的小伙伴们开始找原因,换了一台服务器,上传上去测试可行。这两台服务器的区别在于,一台是LAMP,一台是LNMP。而出问题的就是那天LNMP。度娘后知道,nginx默认情况下不支pathinfo模式,从而不能支持ThinkPHP。
nginx不支持thinkphp的原因
ThinkPHP支持通过PATHINFO和URL&rewrite的方式来提供友好的URL,只需要在配置文件中设置&'URL_MODEL'&=&&2&即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以nginx默认情况下是不支持thinkphp的。不过我们可以通过修改nginx的配置文件来让其支持thinkphp。
让nginx支持pathinfo,支持thinkphp
我们打开nginx的配置文件,如果是想某个站点支持,请打开对应站点的配置文件
我们注释掉配置文件中那些被我圈出来的语句(location&~&\.php$&{……}这一段里面的),我们将对这部分进行重写!
将重写后的代码添加进去。
添加的代码如下:
.........................................
location&/&{&&&&&&&&
&&&&if&(!-e&$request_filename)&{
&&&&&&&&rewrite&&^/(.*)$&&/index.php/$1&&
&&&&&&&&&&&&&&&&
location&~&\.php&{
&&&&fastcgi_pass&127.0.0.1:9000;
&&&&fastcgi_index&index.
&&&&include&fcgi.(改成fastcgi_params或fastcgi.conf)
&&&&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_
...................................
一定要注释到原来的location&~&\.php$&{……}这一段里面的代码
不要漏掉{}
Nginx配置文件里&if&和后面的括号之间要有一个空格,不然会报unknown&directive错误。
阅读(...) 评论()nginx服务器不支持thinkkphp U方法 - ThinkPHP框架
nginx服务器不支持thinkkphp U方法,按官网的方法修改了nignx的配置文件,虽然可以支持pathinfo了 但是U方法解析出来的地址是错误的
、对猪弹琴
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。相关文章推荐:
nginx 支持pathinfo
让nginx支持ThinkPHP的URL重写和pathinfo
ThinkPHP支持通过pathinfo和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是nginx中默认是不支持pathinfo的,所以我们需要修改nginx.conf文件。
网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了[code]
1 location /proje...
阅读(3106) 回复(3)
其他文章推荐
本帖最后由 小小啊咭 于
13:55 编辑
地址:/admin/index.php/article
请高手帮忙看看
在apache都能好好的
nginx.conf
--------------------------------------
location ~ ^.+\.php {
fastcgi_pass
127.0.0.1:9000;
fastcgi_index
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param
SCRIPT_FILENAME
$document_root$fastcgi_script_
fastcgi_param
阅读(1016) 回复(2)
放在server外面
ssi_silent_
ssi_types text/
放在server里面
location / {
ssi_silent_
ssi_types text/
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1676/showart_2108533.html
阅读(685) 回复(0)
/usr/ports/www/nginx
make config
--without-http_memcached_module
不知道怎么加上去
阅读(1362) 回复(0)
location / {
index index.html index.
if (-f $request_filename/index.html){
rewrite (.*) $1/index.
if (-f $request_filename/index.php){
rewrite (.*) $1/index.
if (!-f $request_filename){
rewrite (.*) /index.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.n...
阅读(970) 回复(0)
他网站上貌似只说了perl cgi的实现,其他的貌似没说了,有人做过吗?
阅读(3817) 回复(2)
要使用nginx下的泛域名支持,必须在编译 nginx的时候加上
--with-http_sub_module
freebsd下ports安装的时候有提示的,选上即可。
方法我google了半天,网上的好多我照做都是不行的,例如这个:
server_name
这个会提示:
# nginx -t
13:22:56 [emerg] 63944#0: conflicting parameter "*." in www.conf:14
13:22:56 [emerg] 63944#...
阅读(846) 回复(0)
nginx支持泛域名支持的方法
要使用nginx下的泛域名支持,必须在编译 nginx的时候加上
--with-http_sub_module
freebsd下ports安装的时候有提示的,选上即可。
方法我google了半天,网上的好多我照做都是不行的,例如这个:
server_name
这个会提示:
# nginx -t
13:22:56 [emerg] 63944#0: conflicting parameter "*." in www.conf:14
2009/01/...
阅读(651) 回复(0)
nginx deny最多能能支持多少条记录
一个deny. 都是不同网段的,单个IP.
DENY 211.XX.XX.XX
DENY 222.XX.XX.XX
阅读(1473) 回复(2)
location ~ ^(.+\.php)(.*)$ {&&&&&&&&&&&&&&& root /www/&&&&&&&&&&&&&&& include fastcgi.&&&&&&&&&&&&&&& fastcgi_index&nb...
阅读(758) 回复(0)
apache和nginx都支持fastcgi
apache是模块化结构,本身不自带支持FASTCGI的模块,要让php-fastcg支持APACHE ,必须借助于第三方模块mod_fastcgi;
关于LAMP和LEMP的安装:参照http://bbs.linuxtone.org/forum-22-1.html很详细
wget /dist/mod_fastcgi-2.4.6.tar.gz
wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.67.tar.gz
安装两种方法:
tar zxvf FCGI-0.67.tar.gz
perl Makefile...
阅读(1830) 回复(0)
盛拓传媒:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题解决ThinkPHP在Nginx下无法使用pathin方式的问题
Ubuntu 12.04 32bit
AMH面板 4.2
Nginx 1.4.4
ThinkPHP 3.1.2
--------------------------------- 不太华丽的分割线 ---------------------------------
其实就是直接写rewrite文件,具体的语法请百度之,我也不太懂,也是在网上半抄半改才勉强搞定的,rewrite内容在下面放出:
备注:我是直接在AMH上配置Nginx虚拟主机的,所以路径什么的可能会有些不同
在写rewrite之前先将原vhost下对应的网站配置中的location ~ *\.php$ {}整个注释或删除(注意备份哦!!)
location / {
index index.
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1
location ~ .*\.php
set $path_info "";
set $real_script_name $fastcgi_script_
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
fastcgi_pass
unix:/tmp/php-cgi-.
fastcgi_index index.
include fcgi-host.
fastcgi_param DOCUMENT_ROOT
fastcgi_param SCRIPT_FILENAME /web$real_script_
fastcgi_param PATH_INFO $path_
--------------------------------- 不太华丽的分割线 ---------------------------------
参考文章:
/%E4%B8%8D%E7%94%A8rewrite%E5%85%BC%E5%AE%B9%EF%BC%8C%E8%A7%A3%E5%86%B3nginx%E4%B8%8D%E6%94%AF%E6%8C%81thinkphp-pathinfo%E6%A8%A1%E5%BC%8F/
http://blog.csdn.net/realghost/article/details/9082847

我要回帖

更多关于 nginx 支持文件下载 的文章

 

随机推荐