nginx的rewrite
来源:互联网 发布:dnf斗兽场印章淘宝 编辑:程序博客网 时间:2024/06/04 23:32
- rewrite结尾标识符
1)last :就相当于Apache里的(L)标记,表示完成rewrite匹配
2)break:完成本条规则匹配后,终止匹配,不会再匹配后面的规则
3)redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
4)permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
其中last和break用来实现URL重写时,浏览器地址栏URL地址不变
- rewrite常用表达式
. 匹配任何单字符? 匹配0到1个字符* 匹配0到多个字符+ 匹配1到多个字符^ 字符串开始标志$ 字符串结束标志\n 转义符标志[string] 匹配字符串:string[^string] 不匹配字符串:stringhello|world 可选择的字符串:hello|world
- rewrite常用变量
REMOTE_ADDR 客户端的IP地址HTTP_USER_AGENT 用户使用的代理,例如浏览器REQUEST_FILENAME 访问的文件和目录HTTP_REFERER 告知服务器,从哪个页面来访问的HTTP_COOKIE 客户端缓存,主要用于存储用户名和密码等信息HTTP_HOST 服务器域名HTTP_ACCEPT 客户端的浏览器支持的MIME类型DOCUMENT_ROOT 服务器发布目录SERVER_PORT 服务器端口SERVER_PROTOCOL 服务器端协议QUERY_STRING URL中访问的字符串TIME_YEAR 年TIME_MON 月TIME_DAY 日
- rewrite常用案例
1)去掉域名后面的forum.php
rewrite /forum.php http://www.lee1.com/ permanent;rewrite ^/$ /forum.php last;
2)判断是否IE浏览器,是的话重写到百度页面,ZF有时候用这个来判断,如果不用ie就直接返回个错误页面并提示要用ie
if ( $http_user_agent ~ MSIE ) { rewrite ^(.*)$ http://www.baidu.com/ permanent; }
3)判断是否用手机等来登录的,是的话重写到其他页面
if ( $http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)" ) { rewrite ^/$ http://www.baidu.com/ permanent; }
4)args指匹配url里任意字符的意思
if ($args ~* tid=2017){ return 500;}
在浏览器输入http://www.123.com/hahah/ddd?tid=2017,就会提示500 Internal Server Error ,而2017改成其他数字,则直接提示不存在页面,即not found
5)带着参数,实现伪静态,用户可以访问html,但是页面实际上是动态的php等,也就是php转成html的
rewrite ^/([0-9]+)/lee/(.+)$ /phpinfo.php?tid/$1/items=$2 permanent;
比如说很难写下面的:
http://bbs.lee.com/forum.php?gid=68
相对来说,http://bbs.lee.com/thread-2221-1-1.html则比较美观。
语句为
rewrite ^/thread-([0-9]+)-1.html /forum.php?gid=$1 last;
$1就是代表前面括号里的[0-9]+,毕竟静态页面比较友好
6)访问的/直接指向phpinfo.php页面
rewrite ^/$ /phpinfo.php break;
把phpinfo.php文件重定向为www.123.com,网址也会改,permanent是强制改变网址
rewrite ^/phpinfo.php http://www.123.com/ permanent;
访问这个页面的时候重定向到back.jpg
rewrite ^/linux/2019/$ /back.jpg last;
这里要注意如果是下面加了动静分离的语句,则会提示not found,因为已把.jpg格式给了下面的语句来处理
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
7)如果不存在访问的页面,则重定向到phpinfo.php页面,一般网站停止运行的时候会用到这个,就是为了防止404
if ( !-e $request_filename){ rewrite ^/(.*)$ /phpinfo.php last;}
这个重写语句的功能跟error_page 500 502 503 504 /50x.html;类似,都是错误时候的指向页面,所以两者可选其一。而50x.html则是在/usr/local/nginx/html/50x.html
- nginx的rewrite设置
- nginx Discuz 的rewrite
- rewrite转成nginx的
- NGINX的REWRITE配置
- nginx的rewrite机制
- nginx rewrite 的语法
- nginx rewrite 的语法 .
- Nginx的Rewrite配置
- nginx rewrite 的语法
- Nginx的Rewrite配置
- Nginx的rewrite应用
- nginx的rewrite 指令
- nginx的rewrite
- nginx下的rewrite
- nginx的rewrite规则
- nginx的Rewrite重写
- Nginx的rewrite规则
- nginx的rewrite详解
- 深度学习入门必须理解这25个概念
- Windows窗口的国际象棋棋盘
- NumPy 数组对象
- UVA 610 Street Directions
- EA&UML日拱一卒-多任务编程超入门-(13)启动和终止进程
- nginx的rewrite
- js获取验证码后倒计时(记录一下)
- hdu 1724 辛普森积分公式
- Linux问题汇总
- 第十三周项目1
- 自然语言处理
- 山科大OJ—指针问题编写函数:比较三个数大小&&比较三个数大小
- 功放初学习
- 线程面试题