我正在使用nginx 1.0.8,并且尝试将所有访问者从www.mysite.com/dir重定向到google搜索页面http://www.google.com/search?q=dir,其中dir是变量,但是如果dir ==“ blog”(www.mysite .com / blog),我只想加载博客内容(Wordpress)。

这是我的配置:

    location / {
        root   html;
        index  index.html index.htm index.php;
    }



    location /blog {
          root   html;
          index index.php;
          try_files $uri $uri/ /blog/index.php;
    }

    location ~ ^/(.*)$ {
          root   html;
          rewrite ^/(.*) http://www.google.com/search?q=$1 permanent;
    }


如果我这样做,即使www.mysite.com/blog也将重定向到google搜索页面。如果删除最后一个位置,www.mysite.com / blog效果很好。

从我在这里阅读的内容:http://wiki.nginx.org/HttpCoreModule#location看来,优先级将首先在正则表达式上,并且与查询匹配的第一个正则表达式将停止搜索。

谢谢

最佳答案

location / {
    rewrite ^/(.*)$ http://www.google.com/search?q=$1 permanent;
}

location /blog {
      root   html;
      index index.php;
      try_files $uri $uri/ /blog/index.php;
}



http://nginx.org/r/location
http://nginx.org/en/docs/http/request_processing.html

关于mod-rewrite - nginx重定向除一个目录以外的所有目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11493325/

10-17 00:41