基于引用网址正则表达式

时间:2016-11-19 19:20:33

标签: regex redirect nginx url-rewriting

nginx的新手,仍然试图弄清楚它的方法。

我尝试根据引荐网址重定向到外部网址。例如,在我对托管域的下面的代码中,如果引用URL来自Facebook,我想将用户重定向到特定的URL:

location / {
index index.php;
    if ($http_referer ~* ^(.*?(\bfacebook\b)[^$]*)$ ) {
           rewrite http://www.othersite.com break;
    } 
try_files $uri $uri/ @handler;
expires 30d; 
}  

Nginx一旦重新启动就不会抛出任何错误,但尽管从Facebook链接进行了测试,但它并没有执行。

任何能指出正确方向的nginx /正则表达专家吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

虽然它可能会通过语法测试,但您的rewrite语句不正确。要将任何URI重定向到新URL,您可以使用:

rewrite ^ http://www.example.com/? permanent;

但首选的解决方案是效率更高:

return 301 http://www.example.com/;

有关这两个指令的详细信息,请参阅this page