nginx 重写基本 URL

nginx 重写基本 URL

我想要根 URL

http://www.example.com

重定向至

http://www.example.com/something/else

这是因为某些奇怪的 WP 插件总是在基本 URL 上设置 cookie,从而不允许我缓存它。

我尝试了这个指令:

location / {
    rewrite  ^  /something/else  break;
}

但是 1) 没有重定向,2) 页面开始向我的服务器发送超过 1,000 个请求。使用这个:

 location / {
        rewrite  ^  http://www.example.com/something/else  break;
    }

Chrome 报告重定向循环。

使用正确的正则表达式是什么?

答案1

你真的想匹配确切地您位置块中的根 URL,而不是“绝对所有内容”:

location = / {
    rewrite ^ /something/else break;
}

答案2

这应该可以完成这项工作:

location / {
   rewrite  ^/$  /something/else  break;
}

答案3

rewrite陈述默认情况下执行内部重写,除非目标是绝对 URL 或您设置redirectpermanent标志。类似这样的操作将向客户端返回 HTTP 重定向:

rewrite ^/$ /something/else redirect;

答案4

或者你可以这样做:

location = / {
     rewrite ^/$    http://example.com/an/other/path;
}

当重写的 URL 以“http”方案开头时,Nginx 会自动向客户端发送 HTTP 302 重定向。

相关内容