nginx 使用 URL 中的斜杠进行重定向

nginx 使用 URL 中的斜杠进行重定向

我正在为我们的营销工作开发一个 RYO QR 码管理系统,让所有 QR 码都命中指定的 url 结构,然后我会通过 nginx 将其转发到它们指定的位置。

我正在尝试建立这个结构:

server {
      listen 80;
      server_name mydomain.com/c/m/b/1;
      return 301 $scheme://myotherdomain.com$request_uri;
}

当我启动 nginx 时,我的服务器名称行因包含可疑字符而被调用。域名中可以使用斜线吗?

答案1

这是基于对您可能想要的东西的猜测。

如果您想要将所有http://mydomain.com/URL 重定向至http://myotherdomain.com/,您应该这样做:

server {
    listen 80;
    server_name mydomain.com;

    rewrite ^ http://myotherdomain.com$request_uri permanent;
}

如果您只想在某些路径中重定向,您可以使用该location指令:

server {
    listen 80;
    server_name mydomain.com;

    location /c {
        rewrite ^ http://myotherdomain.com$request_uri permanent;
    }
}

答案2

不,斜杠不是域名的有效部分,或者不能用来分隔路径和协议部分(http://) 的 URL。

查看扩展参数(正则表达式)server_name配置语句有帮助。

相关内容