zoukankan      html  css  js  c++  java
  • [Linux] 解决nginx: [emerg] directive "rewrite" is not terminated by ";"

    解决nginx: [emerg] directive "rewrite" is not terminated by ";"
    nginx的rewite规则有时候没注意会报这个错误,原因是规则中存在{}会被认为是规则结尾报错,使用""双引号把规则包起来可以避免这个错误
    还有就是nginx中的规则中/斜杠不必要反斜杠转义/,自动会认识的

    例如:
    rewrite "^/rny/webface/mailApps/(.*)(/d{6,})(.*)$" /webface/mailapps/dev/$1$3

    .*和.*?的区别:
    .*?是非贪婪的,匹配到第一个/就停了
    [root@localhost riadev]# echo "/rny/webface/mailApps/xxx/dfdffd/123456_abc.js"|grep -oP "^/rny/webface/mailApps/(.*?)/"
    /rny/webface/mailApps/xxx/

    .*是贪婪的,匹配到了最后一个/
    [root@localhost riadev]# echo "/rny/webface/mailApps/xxx/dfdffd/123456_abc.js"|grep -oP "^/rny/webface/mailApps/(.*)/"
    /rny/webface/mailApps/xxx/dfdffd/

    d{6,}这个的意思是最少6个数字,超过的也能匹配到,少的匹配不到
    grep是不能捕获()中的内容,在nginx中后面的$就是可以捕获到
    [root@localhost riadev]# echo "/rny/webface/mailApps/xxx/dfdffd/123456abc.js"|grep -oP "^/rny/webface/mailApps/(.*)/(d{6,})(.*)"
    /rny/webface/mailApps/xxx/dfdffd/123456abc.js
    这个时候的$1和$3分别是xxx/dfdffd 和 abc.js

    rewrite "^/rny/webface/mailApps/(.*)(/d{6,})(.*)$" /webface/mailapps/dev/$1$3
    会把/rny/webface/mailApps/xxx/dfdffd/123456abc.js 匹配到 /webface/mailapps/dev/xxx/dfdffd/abc.js

  • 相关阅读:
    学习 TList 类的实现[1]
    Dll 使用 PChar 参数的小例子
    学习使用资源文件[11]
    【转载】OGRE 内存管理
    【转载】Ogre的内存分配策略
    【转载】.NET面试题系列[0]
    【转载】深入探讨透视投影坐标变换
    【转载】四元数-Quaterion
    【转载】齐次坐标
    【转载】深入研究Windows内部原理绝对经典的资料
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11906926.html
Copyright © 2011-2022 走看看