首页 > 系统相关 >Nginx06 Rewrite

Nginx06 Rewrite

时间:2022-10-28 10:22:17浏览次数:64  
标签:shtml 匹配 rewrite Rewrite 123 Nginx06 teacher testParam

1 简介

  rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块。rewrite模块会根据PCRE正则匹配重写URI,然后发起内部跳转再匹配location,或者直接做30x重定向返回客户端。rewrite其实就是做了uri的映射

 

2 rewrite语法格式及参数语法

  rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记。

  rewrite    <regex>    <replacement>    [flag];

    关键字      正则        替代内容          flag标记

    关键字:其中关键字error_log不能改变

    正则:perl兼容正则表达式语句进行规则匹配

    替代内容:将正则匹配的内容替换成replacement

    flag标记:rewrite支持的flag标记

flag标记说明:

last  #本条规则匹配完成后,继续向下匹配新的location URI规则

break  #本条规则匹配完成即终止,不再匹配后面的任何规则

redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

 

3 rewrite参数的标签段位置

  可以在下面这些地方使用

server,location,if

 

4 写法

rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break;  #地址重写

  rewrite为固定关键字,表示开始进行rewrite匹配规则 

  ^/[0-9]+$是正则表达式,匹配路径

  替代部分是/index.html?testParam=$1,$1是对应前面第一个匹配参数,也就是取自^/[0-9]+。匹配成功后跳转到的URL。

  flag部分break表示本条规则匹配完成即终止,不再匹配后面的任何规则

  此时如访问:192.168.28.110/123  实际会访问http://www.atguigu.com/teacher.shtml?testParam=123

 

 

5 示例

5.1 配置

  现有一个nginx:192.168.28.110:80

  nginx配置如下:

rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break;  #地址重写
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;


    server {
        listen       80;
        server_name  nginx1.com;

        location / {
            proxy_pass   http://www.atguigu.com/; #方向代理
            rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break;  #地址重写
            #root   /usr/local/mynginx/nginx1;
            #index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
 

5.2 访问

1)直接访问

http://www.atguigu.com/teacher.shtml

 

2)访问nginx

http://192.168.28.110/123

  在访问上面地址时,

  取192.168.28.110后面的uri去和rewrite的表达式匹配

  ^/[0-9]+$表示任意数量的数字,123匹配上了
  那么就会使用/teacher.shtml?testParam=$1替代123
  $1就是取第一个匹配的值,也就是123,也就是/teacher.shtml?testParam=123
  完整的就是http://192.168.28.110/teacher.shtml?testParam=123
  由于配置了方向代理,所以实际访问的就是http://www.atguigu.com/teacher.shtml?testParam=123

 

 

  

标签:shtml,匹配,rewrite,Rewrite,123,Nginx06,teacher,testParam
From: https://www.cnblogs.com/jthr/p/16834913.html

相关文章

  • nginx安装rewrite模块
    Linuxnginx安装目录找不到?如果找不到,那应该就是没有完成安装或者编译:首先要确认是否正确安装了:make&&makeinstall重新编译一次其次,在确定安装的目录:直接查看rpm包试试,rpm-q......
  • charles中Map、Rewrite、Breakpoints的区别
    Charles提供了Map功能、Rewrite功能、Breakpoints功能,都可以达到修改服务器返回内容的目的,这三者的差异是:MapMap功能适合长期的将某些请求重定向到另一个网络地址或本地......
  • NGINX配置文件,REWRITE,IF
    NGINX配置文件,REWRITE,IF目录NGINX配置文件,REWRITE,IFREWRITIF基于浏览器实现分离案例防盗链案例nginx配置文件,rewrite,if[rewrit]if[基于浏览器实现分离案例][防盗......
  • nginx配置文件rewrite和if
    nginx配置文件rewrite和ifrewrite语法:rewriteregexreplacementflag;,如:rewrite^/images/(.*\.jpg)$/imgs/$1break;此处的$1用于引用(.*.jpg)匹配到的内容,又如:re......
  • nginx配置文件rewrite和if
    nginx配置文件rewrite和ifrewrite语法:rewriteregexreplacementflag;,如:rewrite^/images/(.*\.jpg)$/imgs/$1break;此处的$1用于引用(.*.jpg)匹配到的内容,又如:re......
  • Nginx rewrite 的last、break、redirect、permanent区别
    Nginxrewrite的last、break、redirect、permanent有四种模式: last和break都会跳转的rewrite的地址,区别是:last跳转后,会重新发起请求再匹配一次location,而break则只......
  • Nginx try_files 和 rewrite 的区别
    try_files 是试图按指定文件的顺序依次尝试是否能获取响应内容,如果能获取响应内容,则向客户端返回响应内容。否则继续尝试从下一个指定文件获取响应内容。rewrite是按指......
  • RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    <IfModulemod_rewrite.c>Options+FollowSymlinksRewriteEngineOnRewriteCond%{REQUEST_FILENAME}!-dRewriteCond%{REQUEST_FILENAME}!-fRewriteRule^(.*)$in......
  • 2. 使用rewrite规则实现将所有到a域名的访问rewrite到b域名
    2. 使用rewrite规则实现将所有到a域名的访问rewrite到b域名a域名:www.magedu.orgb域名:m.magedu.org a域名配置:  #将a域名的所有的连接都临时跳转到b域名 server......