我想别名m.example.com以便将请求转发/别名为example.com/m/但是用户不会被redirect到/m/目录。
例如,用户访问m.example.com , m.example.com/1.htm / m.example.com/1.htm , m.example.com/2.htm / m.example.com/1.htm ,但nginx正在将请求转发/别名到example.com/m/1.htm和example.com/m/2.htm 。
我试图使用rewrite指令,但是这似乎执行客户端redirect到example.com/m/ 。
我也看了一下alias指令,但是这似乎只是修改文件在服务器文件系统上的位置。
我肯定这一定是以前做过的,但我似乎无法解决这个问题。 我使用了一个不正确的标志与alias指令(我试过所有4: last , break , redirect , permanent )。 我错过了正确的使用方法吗?
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它而不在意。