nginx重写基址

我想要的url

http://www.example.com 

redirect到

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

这是因为一些不可思议的WP插件总是在基础url上设置一个cookie,这不允许我caching它。

我试过这个指令:

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

但1)没有redirect和2)页面开始向我的服务器发送超过1000个请求。 有了这个:

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

Chrome报告一个redirect循环。

什么是正确的正则expression式使用?

你真的想要匹配你的位置块的根url,而不是“绝对一切”:

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

这应该做的工作:

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

rewrite语句默认执行内部重写,除非目标是绝对URL,或者设置redirectpermanent标志。 像这样的东西会返回一个HTTPredirect到客户端:

 rewrite ^/$ /something/else redirect; 

或者你可以这样做:

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

当重写URL以“http”scheme开始时,Nginx会自动发送一个HTTP 302redirect到客户端。