设为首页 收藏本站
查看: 1046|回复: 0

[经验分享] Nginx URL重写(rewrite)配置及信息详解

[复制链接]

尚未签到

发表于 2017-12-22 17:36:46 | 显示全部楼层 |阅读模式
Nginx URL重写(rewrite)配置及信息详解
  URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中
  Nginx URL重写(rewrite)介绍
  和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持
  rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
  rewrite语法格式及参数语法说明如下:
  rewrite    <regex>    <replacement>    [flag];
  关键字      正则        替代内容          flag标记
  关键字:其中关键字error_log不能改变
  正则:perl兼容正则表达式语句进行规则匹配
  替代内容:将正则匹配的内容替换成replacement
  flag标记:rewrite支持的flag标记
  flag标记说明:
  last  #本条规则匹配完成后,继续向下匹配新的location URI规则
  break  #本条规则匹配完成即终止,不再匹配后面的任何规则
  redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址
  permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
    rewrite参数的标签段位置:
  server,location,if
    例子:
  rewrite ^/(.*) http://www.czlun.com/$1 permanent;
  说明:                                         
  rewrite为固定关键字,表示开始进行rewrite匹配规则
  regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
  replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL。
  flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.czlun.com/$1 地址上
  regex 常用正则表达式说明
  字符
  描述
  \
  将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如&#8220;\n&#8221;匹配一个换行符,而&#8220;\$&#8221;则匹配&#8220;$&#8221;
  ^
  匹配输入字符串的起始位置
  $
  匹配输入字符串的结束位置
  *
  匹配前面的字符零次或多次。如&#8220;ol*&#8221;能匹配&#8220;o&#8221;及&#8220;ol&#8221;、&#8220;oll&#8221;
  +
  匹配前面的字符一次或多次。如&#8220;ol+&#8221;能匹配&#8220;ol&#8221;及&#8220;oll&#8221;、&#8220;oll&#8221;,但不能匹配&#8220;o&#8221;
  ?
  匹配前面的字符零次或一次,例如&#8220;do(es)?&#8221;能匹配&#8220;do&#8221;或者&#8220;does&#8221;,"?"等效于"{0,1}"
  .
  匹配除&#8220;\n&#8221;之外的任何单个字符,若要匹配包括&#8220;\n&#8221;在内的任意字符,请使用诸如&#8220;[.\n]&#8221;之类的模式。
  (pattern)
  匹配括号内pattern并可以在后面获取对应的匹配,常用$0...$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\)
     rewrite 企业应用场景
  Nginx的rewrite功能在企业里应用非常广泛:
  u 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
  u 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
  u 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com
  u 根据特殊变量、目录、客户端的信息进行URL调整等
  Nginx配置rewrite过程介绍
  (1)创建rewrite语句
  vi conf/vhost/www.abc.com.conf
  #vi编辑虚拟主机配置文件
  文件内容
  server {
  listen 80;
  server_name abc.com;
  rewrite ^/(.*) http://www.abc.com/$1 permanent;
  }
  server {
  listen 80;
  server_name www.abc.com;
  location / {
  root /data/www/www;
  index index.html index.htm;
  }
  error_log    logs/error_www.abc.com.log error;
  access_log    logs/access_www.abc.com.log    main;
  }
  或者
  server {
  listen 80;
  server_name abc.com www.abc.com;
  if ( $host != 'www.abc.com'  ) {
  rewrite ^/(.*) http://www.abc.com/$1 permanent;
  }
  location / {
  root /data/www/www;
  index index.html index.htm;
  }
  error_log    logs/error_www.abc.com.log error;
  access_log    logs/access_www.abc.com.log    main;
  }
    (2)重启服务
  确认无误便可重启,操作如下:
  nginx -t
  #结果显示ok和success没问题便可重启

  nginx -s>    (3)查看跳转效果
  打开浏览器访问abc.com
  页面打开后,URL地址栏的abc.com变成了www.abc.com说明URL重写成功。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-426913-1-1.html 上篇帖子: 在Linux配置Nginx web服务器步骤 下篇帖子: Nginx Access Log日志统计分析常用命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表