无法设法让nginx重写规则正常工作

时间:2016-07-07 09:40:59

标签: redirect nginx url-rewriting return

我需要创建一些重写(可能是返回?)规则......

我需要重定向:

www.domain1.es/eswww.domain1.es

www.domain1.es/enwww.domain2.eu/en

www.domain1.es/frwww.domain2.eu/fr

还需要:

www.domain2.eu/eswww.domain1.es

我会感激任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

使用en指令可轻松实现frreturn重定向。在server域的www.domain1.es块中,您可以尝试:

location ^~ /en { return 301 $scheme://www.domain2.eu$request_uri; }
location ^~ /fr { return 301 $scheme://www.domain2.eu$request_uri; }

请注意^~修饰符使此前缀位置优先于同一级别的任何正则表达式位置。有关详细信息,请参阅this document

从URI中删除/es前缀需要重写。你可以试试这些:

server域的www.domain1.es块中:

rewrite ^/es(.*)$ $1 permanent;

server域的www.domain2.eu块中:

rewrite ^/es(.*)$ $scheme://www.domain1.es$1 permanent;

上述任何一个都可以置于location ^~ /es块内以提高效率(但我认为没有必要)。此外,后者不需要删除/es前缀(因为它在其他服务器上完成)。