nginx子域重写

iva*_*n73 9 regex mod-rewrite nginx

我需要一个nginx重写规则来重写:

http://some-keyword.example.comwww.example.com/keyword.php?keyword=$some-keyword

而没有www在前面的域仍然会重写www.example.com并且www不被视为关键字.

请问你能帮我解决这个问题吗,怎么写这两条规则?

Ale*_*rov 7

如果你的意思是重定向,那么:

server {
  server_name ~^(.*)\.example\.com$ ;

  rewrite ^ http://www.example.com/keyword.php?keyword=$1 redirect;
}
Run Code Online (Sandbox Code Playgroud)

重写的情况下,然后干脆做

server {
  server_name example.com ~^(.*)\.example\.com$ ;

  rewrite ^ /keyword.php?keyword=$1 break;

#  location /keyword.php {
#    ....
#  }
}
Run Code Online (Sandbox Code Playgroud)

  • 即使问题与重写有关,您的示例也不会像应有的那样排除“ www”。您需要为此添加否定的超前构造:`^((?! www \。)。*)\。example \ .com $` (2认同)