htaccess rewrite 转换为 nginx 配置有循环

htaccess rewrite 转换为 nginx 配置有循环

我将网站从 apache 服务器迁移到 nginx 服务器,需要转换 .htaccess 规则。

我有一个重写规则,就像在.htaccess中一样:

 RewriteCond %{HTTP_HOST} !=example.com
 RewriteCond %{HTTP_HOST} (.+)\.(\w+)
 RewriteRule ^/?$ ?q=landingpage/%1%2 [L,QSA]

这将执行以下操作,用于域别名:

  • 如果域名不是 example.com (即 foo.bar)
  • 获取点 (foo bar) 前后的变量
  • 提供 foo.bar?q=landingpage/foobar

我将其转换为以下 nginx 配置:

location / {
    if ($http_host != "example.com"){
    rewrite ^/?$ /?q=landingpage/%1%2 break;
    }
}

然而,这是

  1. 不完整,因为它没有定义变量(foo 和 bar)

  2. 这会导致循环,其中 URL 会变得很长,不断重复

  3. 它使用不推荐的“ifs”(似乎 try_files 更好)

我无法让它工作。我是 nginx 新手,希望得到帮助,谢谢。

相关内容