nginx 配置rewrite笔记:

通过下面的示例来说明一下,
1. 先说说location :
location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样:
location ^~ /public/ {
root /data/wwwroot/a.php.abc.cc;
}
location ^~ /public/ 表示匹配以 “/public/” 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出。
location / {
root /data/wwwroot/a.php.abc.cc;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
}

location / { ... } 表示匹配所以的url,匹配成功执行其中的内容,执行完毕后停止并退出。

rewrite ^/e10adc3949ba[/]?$ /e10adc3949ba.php last; 表示将 /e10adc3949ba 或 /e10adc3949ba/ 开头的url修改为 /e10adc3949ba.php
rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)$ /e10adc3949ba.php?c=$1&a=$2 last; 表示将pathinfo地址转换为参数地址,
比如原url: /e10adc3949ba/help/manage/lists 转换后:/e10adc3949ba.php?c=help/manage&a=lists

server {
listen 80;
server_name a.php.abc.cc;

access_log /data/wwwlogs/a.php.abc.cc_nginx.log combined;
index index.html;
root /data/wwwroot/a.php.abc.cc;

location ^~ /public/ {
root /data/wwwroot/a.php.abc.cc;
}

location ^~ /datas/ {
root /data/wwwroot/a.php.abc.cc;
}

rewrite ^/e10adc3949ba[/]?$ /e10adc3949ba.php last;
rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)$ /e10adc3949ba.php?c=$1&a=$2 last;
rewrite ^/e10adc3949ba/([a-z]*/[a-z]*)/([a-z]*)\?(.*)$ /e10adc3949ba.php?c=$1&a=$2&$3 last;

location ^~ /e10adc3949ba {
root /data/wwwroot/a.php.abc.cc;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/e10adc3949ba.php;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
break;
}

rewrite ^/([a-z]*)/([a-z]*)$ /index.php?m=home&c=$1&a=$2 last;
rewrite ^/([a-z]*)/([a-z]*)\?(.*)$ /index.php?m=home&c=$1&a=$2&$3 last;

location / {
root /data/wwwroot/a.php.abc.cc;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
}
}

整个配置的意思为:

1.优先匹配/public和/datas,这两个中包含的是公用的可公开的文件,比如js,css,自定义文件等等。
2. 如果1没有匹配上,则剩下的都是php文件。php分为两类,一个是e10adc3949ba.php (后台入口),另一个是index.php(前台入口)。
3. 先配置后台,后台的都需要包含 /e10adc3949ba , 通过这个前缀对后台进行匹配。匹配到就调用后台入口执行,执行完毕退出。
4. 上下的默认都是前台内容,先进行url转换,将phpinfo格式的url转换为参数模式。然后调用index.php入口文件执行。
5. 最后的匹配还包含了 / 的情况和其他错误的地址情况都会匹配上。错误处理由代码完成。

nginx 配置rewrite 笔记的更多相关文章

  1. nginx配置rewrite

    1. uri  和 url读取区别 区别就是URI定义资源,而URL不单定义这个资源,还定义了如何找到这个资源. 比如说,一个服务器上,到一个文件夹/网页的绝对地址(absolute path)就是U ...

  2. nginx 配置 rewrite 跳转

    在访问 test.com 网站时,会自动跳转到 www.test.com ,这是因为该网站做了 URL rewrite 重定向,一般网页重定向跳转分为两种,301 和 302 :301,302 都是H ...

  3. nginx配置-Rewrite

    rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能 ...

  4. Nginx配置rewrite过程介绍

    创建rewrite语句 vi conf/vhost/www.abc.com.conf #vi编辑虚拟主机配置文件 文件内容 server { listen 80; server_name abc.co ...

  5. nginx配置rewrite总结

    1.rewrite regex replacement [flag] 2.flag为break时,url重写后,直接使用当前资源,不在执行location里其他语句,完成本次请求,地址栏url不变. ...

  6. 【Nginx】Nginx配置REWRITE隐藏index.php

    只需要在server里面加上 if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; }

  7. Nginx配置REWRITE隐藏index.php

    server { listen 80; server_name localhost; root D:\workspace\PHP\Atromic; location / { index index.p ...

  8. Nginx配置location总结及rewrite规则写法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #323333 } p. ...

  9. rewrite规则写法及nginx配置location总结

    rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用. 例如http://seanlook.com/a/we/index.php ...

随机推荐

  1. 【&】位与运算符【|】位或运算符之权限控制算法

    [&]位与运算符: 按位与运算符"&"是双目运算符. 其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数 ...

  2. Java内存分配及变量存储位置实例讲解

    Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...

  3. 【译】RabbitMQ:工作队列(Work Queue)

    在第一篇我们写了两个程序通过一个命名的队列分别发送和接收消息.在这一篇,我们将创建一个工作队列在多个工作线程间分发耗时的工作任务. 工作队列的核心思想是避免立刻处理资源密集型任务导致必须等待其执行完成 ...

  4. Android开发学习---sharedpreference的使用

    在前面文章中,为了使数据回显,使用的技术思路是,首先,将数据持久化写到ROM或者SDCard中,其中name和password以":"分隔;然后,将数据记取出来,再用split方法 ...

  5. Windows下的maven安装及配置

    有时候开发需要用到maven来进行项目管理,说下怎么配置maven吧 环境&工具: windows系统 jdk1.8 apache-maven-3.2.5.zip eclipse 首先需要去A ...

  6. 不一样的角度 解读微信小程序

    不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙 ...

  7. 将List转换为二维数组(result)

    result的数据结构为List<Map<String,Object>> //将List转换为二维数组String[][] String[][] z = new String[ ...

  8. [04]APUE:文件与目录

    [a] stat / lstat / fstat #include <sys/stat.h> int stat(const char *restrict pathname, struct ...

  9. OpenVPN 通过服务器上网

    在Windows环境中架设OpenVPN服务相对比较简单,网上这方面的教程也比较丰富,照葫芦画瓢即可.但是大部分教程都只讲了如何将client与Server通过VPN管道连接起来,使client可以正 ...

  10. Mysql连接到Visual studio注意

    测试环境:mysql(mysql-connector-net-6.9.7.msi)+visual studio2012 1.mysql安装ok的情况下!在控制面板管理工具-数据源(ODBC)--用户D ...