Khách hàng của công ty có website chạy 2 phiên bản một phiên bản web ở địa chỉ www.monkidia.com sử dụng cho các thiết bị như máy tính để bàn, máy tính bảng, laptop truy cập và phiên bản mobile ở địa chỉ m.monkidia.com để các thiết bị điện thoại truy cập.
Yêu cầu của họ đặt ra là:
- Nếu người dùng smartphone khi truy cập vào địa chỉ www.monkidia.com sẽ được chuyển hướng sang bản m.monkidia.com.
- Nếu người dùng laptop, tablet khi truy cập vào địa chỉ m.monkidia.com thì chuyển hướng về bản web www.monkidia.com
Xử lý logic này trong nginx như sau:
map $http_user_agent $is_desktop {
default 1;
~*(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino/i 0; # mobile
~*android|ipad|playbook|silk/i 1; # tablet
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
map $is_desktop $is_mobile {
1 0;
0 1;
}
server {
listen 80;
server_name www.monkidia.com;
if ($is_mobile) {
rewrite ^ http://m.monkidia.com$request_uri? redirect;
break;
}
...
}
server {
listen 80;
server_name m.monkidia.com;
if ($is_desktop) {
rewrite ^ http://www.monkidia.com$request_uri? redirect;
break;
}
...
}