将(别名?redirect?路由?)子域转发到Nginxconfiguration中的目录

我想别名m.example.com以便将请求转发/别名为example.com/m/但是用户不会被redirect到/m/目录。

例如,用户访问m.example.comm.example.com/1.htm / m.example.com/1.htmm.example.com/2.htm / m.example.com/1.htm ,但nginx正在将请求转发/别名到example.com/m/1.htmexample.com/m/2.htm

我试图使用rewrite指令,但是这似乎执行客户端redirect到example.com/m/

我也看了一下alias指令,但是这似乎只是修改文件在服务器文件系统上的位置。

我肯定这一定是以前做过的,但我似乎无法解决这个问题。 我使用了一个不正确的标志与alias指令(我试过所有4: lastbreakredirectpermanent )。 我错过了正确的使用方法吗?

configuration使用重写片段:

 server_name example.com m.example.com; 

 if ($host ~* m\.(.*)) { rewrite ^(.*)$ http://example.com/m$1 break; } 

另一个尝试:

 server { listen 80; server_name m.example.com; location / { rewrite ^ http://example.com/m$request_uri permanent; } } 

提前致谢。

这在Nginx中是不可能的。 你可以使用m子域,但是你必须传递给你的后端服务器块。 这是因为Nginx不能在不使用实际HTTPredirect的情况下重写URL,即使您告诉它将会忽略该redirect,并强制HTTPredirect。

如果你使用fastcgi后端,这应该没有什么关系,而且即使你将代理传递给Apache,你也应该能够configuration它而不在意。