nginx 配置rewrite 笔记
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 笔记的更多相关文章
- nginx配置rewrite
1. uri 和 url读取区别 区别就是URI定义资源,而URL不单定义这个资源,还定义了如何找到这个资源. 比如说,一个服务器上,到一个文件夹/网页的绝对地址(absolute path)就是U ...
- nginx 配置 rewrite 跳转
在访问 test.com 网站时,会自动跳转到 www.test.com ,这是因为该网站做了 URL rewrite 重定向,一般网页重定向跳转分为两种,301 和 302 :301,302 都是H ...
- nginx配置-Rewrite
rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能 ...
- Nginx配置rewrite过程介绍
创建rewrite语句 vi conf/vhost/www.abc.com.conf #vi编辑虚拟主机配置文件 文件内容 server { listen 80; server_name abc.co ...
- nginx配置rewrite总结
1.rewrite regex replacement [flag] 2.flag为break时,url重写后,直接使用当前资源,不在执行location里其他语句,完成本次请求,地址栏url不变. ...
- 【Nginx】Nginx配置REWRITE隐藏index.php
只需要在server里面加上 if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; }
- Nginx配置REWRITE隐藏index.php
server { listen 80; server_name localhost; root D:\workspace\PHP\Atromic; location / { index index.p ...
- Nginx配置location总结及rewrite规则写法
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #323333 } p. ...
- rewrite规则写法及nginx配置location总结
rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用. 例如http://seanlook.com/a/we/index.php ...
随机推荐
- Android之ProgressBar
今天复习一下以前的知识,补充一下ProgressBar控件 progressBar是进度条组件,通常用于用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好性. ...
- RandomAccessFile拆分合并文件
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java. ...
- 3个div 宽度移入移出时变化
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- c语言插入排序
对于小规模输入,插入排序是一种非常快速的排序算法,且原理简单,结构紧凑. 插入排序的原理:从序列中第二个数A开始,将A,插入前面已经排好的序列中,形成一个新的排序好的序列,以此类推到最后一个元素. 参 ...
- sql拼接一列数据
执行SELECT userid FROM userinfo得到1234如果要得到1,2,3,4执行方案1DECLARE @STR VARCHAR(8000)SELECT @STR=ISNULL(@ST ...
- Regular Expression Matching leetcode
递归方法运行时间过长.考虑使用动态规划的方法. 代码如下: bool isMatch(string s, string p) { int i,j; int m=s.size(); int n=p.si ...
- 论人品 | | noip1015模拟考
第一题:火车进站... 由于有了老师给的助攻,第一题的时间为半小时,主要在读题了.... jzoj1146 第二题:car 难在正方形的计算? 第二题时间:1.5hour 第三题:sort排序?
- Openfire 集群探究_压测情况
一.(测试时间:20151220 - 下午14:00-17:00) windows环境 第一次测试,运行中发现在eclipse环境下.4w个连接耗尽了约1G的内存. 另外:服务本来可用的,压测客户端强 ...
- 利用windows服务+timer或者windows任务计划程序+控制台进行进行每日邮件推送
1.邮件发送代码 using System.Text; using System.Net; using System.Net.Mail; using System.Reflection; using ...
- 《Objective-C编程》部分示例
<Objective-C编程>部分示例 最近在看<Objective-C编程>顺带实现了书中部分示例代码.如果感兴趣可以自行 下载(点我). 通过本书大致了解了Objectiv ...