【问题标题】:How use regExp with spaces in map?如何在地图中使用带有空格的regExp?
【发布时间】:2020-11-15 03:52:11
【问题描述】:

在站点 http://detectmobilebrowsers.com/ 我得到 reg exp 以通过 $user_agent 检测移动浏览器

有一个代码:

if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino") {
  set $index_file mobile.html;
}

我如何在地图中使用这个 reg exp?像这样:

map $http_user_agent $index_file {
  ~* "regexp" /mobile.html;
  default /desktop.html;
}

nginx 得到错误nginx: [emerg] invalid number of the map parameters in /etc/nginx/conf.d/prod.conf:2

reg exp 包含空格。如果我将 spages 替换为 \s,那么正则表达式将停止工作并且没有检测到电话。

【问题讨论】:

    标签: regex nginx nginx-config


    【解决方案1】:

    解决方案:

    1. 删除~*后面的空格
    2. 删除 regExp 周围的双引号
    3. \s 替换regExp 中的空格
    map $http_user_agent $index_file {
      ~*(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\s|maemo|midp|mmp|netfront|opera\sm(ob|in)i|palm(\sos)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\s(ce|phone)|xda|xiino /mobile.html;
      default /desktop.html;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      相关资源
      最近更新 更多