Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持_nginx

打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化。如果你配置了vhost,而且只需要你这一个vhost支持pathinfo的话,可以直接打开你的vhost的配置文件。找到类似如下代码(不同版本的nginx可能稍有不同,但是相差不会很远):

复制代码 代码如下:

    location ~ .*.(php|php5)?$
        {
                #原有代码
        }

修改成以下代码:

复制代码 代码如下:

    #去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo
    #如果你不需要用到php5后缀,也可以将其去掉
    location ~ .php
        {
                #原有代码
               
                #定义变量 $path_info ,用于存放pathinfo信息
                set $path_info "";
                #定义变量 $real_script_name,用于存放真实地址
                set $real_script_name $fastcgi_script_name;
                #如果地址与引号内的正则表达式匹配
                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_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
        }

这样,nginx服务器就可以支持pathinfo了。但是如果要支持ThinkPHP的URL_MODE设置为2的模式,还需要配置rewrite规则。找到access_log语句,在其上方加上以下语句:

复制代码 代码如下:

    #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
    if (!-e $request_filename)
        {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php/$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
        }

最后,保存配置文件,重启nginx服务,把ThinkPHP的URL_MODEL设置为2,访问下你的页面,如果能正常访问,恭喜你pathinfo配置成功了^_^

时间: 2024-09-10 08:39:46

Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持_nginx的相关文章

Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式_nginx

概述 在上一篇文章Nginx配置Thinkphp支持URL Rewrite中已经介绍了如何配置Nginx支持ThinkPHP的URL Rewrite,但是上文针对的是Centos平台,这次因为某些特殊的原因,服务器环境必须用ubuntu,本来以为和Cetons中一模一样,但是配置完了发现不能使用,所以就百度了一些文章. 配置方法TP官方解决方案 复制代码 代码如下: location ~ .php         {                 #原有代码                  

nginx下配置 iis和tomcat问题

问题描述 nginx下配置 iis和tomcat问题 问题是这样的,我在本地已经配置好了,本地可以通过localhost 和localhost/weixin (自己设置的),分别访问iis和tomcat.但是,放到服务器上之后就不行了,在服务器上本机可以访问,和自己电脑上一样没问题,但是,通过设置的ip或者域名(我有自己的域名和ip),外机访问不了.如果把本配置去掉,还有原来的iis80访问原网站,没问题. 解决方案 那就看看你的nginx的log,是不是域名等方式的时候,路径处理有没有正确的p

Nginx配置PATHINFO隐藏thinkphp index.php_nginx

Nginx配置PATHINFO隐藏index.php Nginx配置文件里放入这段代码 server { listen 80; default_type text/plain; root /var/www/html; index index.php index.htm index.html; #隐藏index.php location / { if (!-e $request_filename) { #一级目录 # rewrite ^/(.*)$ /index.php/$1 last; #二级目

nginx中配置pathinfo模式示例_nginx

缘由 很久不使用apache了,渐渐对apache感到陌生,因为朋友有个ZendFramework框架从apache移到nginx下,需要pathinfo模式支持. 网上海搜 于是开始搜索nginx+pathinfo相关文章,一开以为很容易就会配置好.因为搜索后发现有大量文章介绍nginx开启pathinfo模式,感觉不是什么难事.但是经过几个小时下来,还是没有配置好.并且大量文章的内容都极其相似,基本都是转载的. 开始有点急了!因为一天过去了没有配好. 继续摸索 没办法,继续搜索.为了验证方便

nginx下配置服务端代理Tengine例子

tengine是建立在nginx上的开源软件,添加了一大堆feature,并且你可以使用自定义的内存管理,不管是作为前端代理,还是前端缓存,效果都是萌萌哒的.nginx和tengine略有差异,请查看官方Wiki.Tengine. ## 根据自己情况选择用户 user  nobody; ## 建议设置机器CPU核心数目 worker_processes  1; ## 之前配置机器的时候设置过的打开数目 worker_rlimit_nofile51200;   ## 记录错误日志 error_lo

在Nginx中配置image filter模块来实现动态生成缩略图_nginx

先来看一下什么是nginx的image filter模块. HttpImageFilterModule用来裁剪过大的图片到指定大小,是nginx自带模块,默认不会开启 开启HttpImageFilterModule需要在编译要带上参数 --with-http_image_filter_module 该模块主要有两个指令: 语法: image_filter (test | size | resize width height | crop width height) 默认是: 无 可出现的上下文:

在nginx中配置pathinfo模式支持thinkphp的URL重写_nginx

最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,找到server中的 location ~ .php${},修改为location ~ .php {},并在其中增加以下内容: 复制代码 代码如下: set $path_info "";set $real_script_name $fas

Nginx 下配置SSL证书的方法_Linux

1.Nginx 配置 ssl 模块 默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下: 下载 Nginx 0.7.64 版本,解压 进入解压目录: 复制代码 代码如下: wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz tar zxvf nginx-0.7.64.tar.gz cd nginx-0.7.64 如果要更改heade

nginx下配置https ssl的例子

首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel 然后就是自己颁发证书给自己 #cd /usr/local/nginx/conf #openssl genrsa -des3 -out server.key 1024 #openssl req -new -key server.key -out server.csr #openssl rsa -in server.key -out serv