我有一个问题,我想检测域和设备,并将响应转发到nginx的桌面,www服务器部分。通过重写,这已经完成,但问题是url,被清除并用我的url替换,配置如下:
server {
listen 80 default_server;
#this detects any domain
server_name ~^(www\.)?(?<domain>.+)$;
root /home/someone/main;
index index.html index.htm;
set $mobile_rewrite do_not_perform;
# this regex string is actually much longer to match more mobile devices
if ($http_user_agent ~* '(iPhone|iPod|iPad|Android|BlackBerry|webOS|Windows Phone)') {
set $mobile_rewrite perform;
}
location / {
if ($mobile_rewrite = perform) {
rewrite ^ http://m.someone.domain.com$request_uri? redirect;
break;
}
}
}
我尝试了一种不同的方法,在m.someone.domain.com代码部分中使用了路径的别名,但是这在if位于该位置内部时不起作用。
答案 0 :(得分:0)
您可以尝试以下列方式修改if块。
location / {
if ($mobile_rewrite = perform) {
return 301 http://m.someone.domain.com$request_uri;
}
}
由于您正在使用重写规则作为重定向,因此上述方法可能有效。重写也更重。
答案 1 :(得分:0)
location / {
if ($mobile_rewrite = perform) {
rewrite ^http://m.someone.domain.com$request_uri? / permanent;
}
}
尝试此操作可能对您有用